Feedforward Elements
A feedforward element is any type of open-loop (feedforward) control.
To add a feedforward element, call the feedforward
function in a control system builder.
controlSystem {
feedforward(/* feedforward element */)
}
Basic Feedforward
A basic feedforward is a feedforward with velocity, acceleration, and static components. Pass either the three gains or a BasicFeedforwardParameters
object.
controlSystem {
basicFF(v, a, s)
}
Elevator Feedforward
An elevator feedforward is a feedforward with velocity, acceleration, static, and constant gravity components. Pass either the four gains or a GravityFeedforwardParameters
object.
controlSystem {
elevatorFF(g, v, a, s)
}
Arm Feedforward
An arm feedforward is a feedforward with velocity, acceleration, static, and cosine gravity components. Pass either the four gains or a GravityFeedforwardParameters
object.
IMPORTANT
Your position error must be in radians. To do this, use a custom filter. You can see how to do this on the arms example page.
controlSystem {
armFF(g, v, a, s)
}
Custom Feedforward Elements
To create a custom feedforward element, implement the FeedforwardElement
interface and pass it to the feedforward
function in a control system builder. For example:
class FullPowerFeedforward : FeedforwardElement {
override fun calculate(reference: KineticState): Double {
return 1.0
}
}
controlSystem {
feedforward(FullPowerFeedforward())
}