Class SimpleMotorFeedforward

java.lang.Object
edu.wpi.first.math.controller.SimpleMotorFeedforward

public class SimpleMotorFeedforward extends Object
A helper class that computes feedforward outputs for a simple permanent-magnet DC motor.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    final double
    The acceleration gain.
    final double
    The static gain.
    final double
    The velocity gain.
  • Constructor Summary

    Constructors
    Constructor
    Description
    SimpleMotorFeedforward(double ks, double kv)
    Creates a new SimpleMotorFeedforward with the specified gains.
    SimpleMotorFeedforward(double ks, double kv, double ka)
    Creates a new SimpleMotorFeedforward with the specified gains.
  • Method Summary

    Modifier and Type
    Method
    Description
    double
    calculate(double velocity)
    Calculates the feedforward from the gains and velocity setpoint (acceleration is assumed to be zero).
    double
    calculate(double velocity, double acceleration)
    Calculates the feedforward from the gains and setpoints.
    double
    calculate(double currentVelocity, double nextVelocity, double dtSeconds)
    Calculates the feedforward from the gains and setpoints.
    double
    maxAchievableAcceleration(double maxVoltage, double velocity)
    Calculates the maximum achievable acceleration given a maximum voltage supply and a velocity.
    double
    maxAchievableVelocity(double maxVoltage, double acceleration)
    Calculates the maximum achievable velocity given a maximum voltage supply and an acceleration.
    double
    minAchievableAcceleration(double maxVoltage, double velocity)
    Calculates the minimum achievable acceleration given a maximum voltage supply and a velocity.
    double
    minAchievableVelocity(double maxVoltage, double acceleration)
    Calculates the minimum achievable velocity given a maximum voltage supply and an acceleration.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • ks

      public final double ks
      The static gain.
    • kv

      public final double kv
      The velocity gain.
    • ka

      public final double ka
      The acceleration gain.
  • Constructor Details

    • SimpleMotorFeedforward

      public SimpleMotorFeedforward(double ks, double kv, double ka)
      Creates a new SimpleMotorFeedforward with the specified gains. Units of the gain values will dictate units of the computed feedforward.
      Parameters:
      ks - The static gain.
      kv - The velocity gain.
      ka - The acceleration gain.
      Throws:
      IllegalArgumentException - for kv < zero.
      IllegalArgumentException - for ka < zero.
    • SimpleMotorFeedforward

      public SimpleMotorFeedforward(double ks, double kv)
      Creates a new SimpleMotorFeedforward with the specified gains. Acceleration gain is defaulted to zero. Units of the gain values will dictate units of the computed feedforward.
      Parameters:
      ks - The static gain.
      kv - The velocity gain.
  • Method Details

    • calculate

      public double calculate(double velocity, double acceleration)
      Calculates the feedforward from the gains and setpoints.
      Parameters:
      velocity - The velocity setpoint.
      acceleration - The acceleration setpoint.
      Returns:
      The computed feedforward.
    • calculate

      public double calculate(double currentVelocity, double nextVelocity, double dtSeconds)
      Calculates the feedforward from the gains and setpoints.
      Parameters:
      currentVelocity - The current velocity setpoint.
      nextVelocity - The next velocity setpoint.
      dtSeconds - Time between velocity setpoints in seconds.
      Returns:
      The computed feedforward.
    • calculate

      public double calculate(double velocity)
      Calculates the feedforward from the gains and velocity setpoint (acceleration is assumed to be zero).
      Parameters:
      velocity - The velocity setpoint.
      Returns:
      The computed feedforward.
    • maxAchievableVelocity

      public double maxAchievableVelocity(double maxVoltage, double acceleration)
      Calculates the maximum achievable velocity given a maximum voltage supply and an acceleration. Useful for ensuring that velocity and acceleration constraints for a trapezoidal profile are simultaneously achievable - enter the acceleration constraint, and this will give you a simultaneously-achievable velocity constraint.
      Parameters:
      maxVoltage - The maximum voltage that can be supplied to the motor.
      acceleration - The acceleration of the motor.
      Returns:
      The maximum possible velocity at the given acceleration.
    • minAchievableVelocity

      public double minAchievableVelocity(double maxVoltage, double acceleration)
      Calculates the minimum achievable velocity given a maximum voltage supply and an acceleration. Useful for ensuring that velocity and acceleration constraints for a trapezoidal profile are simultaneously achievable - enter the acceleration constraint, and this will give you a simultaneously-achievable velocity constraint.
      Parameters:
      maxVoltage - The maximum voltage that can be supplied to the motor.
      acceleration - The acceleration of the motor.
      Returns:
      The minimum possible velocity at the given acceleration.
    • maxAchievableAcceleration

      public double maxAchievableAcceleration(double maxVoltage, double velocity)
      Calculates the maximum achievable acceleration given a maximum voltage supply and a velocity. Useful for ensuring that velocity and acceleration constraints for a trapezoidal profile are simultaneously achievable - enter the velocity constraint, and this will give you a simultaneously-achievable acceleration constraint.
      Parameters:
      maxVoltage - The maximum voltage that can be supplied to the motor.
      velocity - The velocity of the motor.
      Returns:
      The maximum possible acceleration at the given velocity.
    • minAchievableAcceleration

      public double minAchievableAcceleration(double maxVoltage, double velocity)
      Calculates the minimum achievable acceleration given a maximum voltage supply and a velocity. Useful for ensuring that velocity and acceleration constraints for a trapezoidal profile are simultaneously achievable - enter the velocity constraint, and this will give you a simultaneously-achievable acceleration constraint.
      Parameters:
      maxVoltage - The maximum voltage that can be supplied to the motor.
      velocity - The velocity of the motor.
      Returns:
      The minimum possible acceleration at the given velocity.