Feedforward Control
Feedforward predicts control inputs
Feedforward or open-loop control is a way to control your robot actuators by estimating what the optimal inputs to the system are. In robotics, most systems are powered by dc motors and for these type of systems a generalizable motion model exists
This equation relates our motor input 'u' to the desired velocity and acceleration of the robot. Since giving a motor a constant power will result in convergence to a constant velocity we can find the voltage/velocity slope to use as our value of kV. Similarly, since input is proportional to force and force is proportional to acceleration, we can find the input / acceleration relationship to be the value of kA. This simple linear model can also be converted to a transfer function for more advanced control.
You can use SimpleFeedforward to implement this controller within sunset.
Rejecting nonlinear effects
Our equation above assumes that our system is linear -- which it is not. In many cases this assumption is adequate but in others we require additional terms to combat nonlinear effects.
The most common addition is a static friction or kstatic term implemented as
Notice this is part of the SimpleFeedforward example!
This term takes the direction that your robot should be traveling and multiplies it by the static friction constant, effectively canceling the effect that friction has on the system. For rotating arms, implementing this to factor in the cos(theta) of your arms angle will work well and produce a robust result.
Last updated