Class ElevatorFeedforward


  • public class ElevatorFeedforward
    extends Object
    A helper class that computes feedforward outputs for a simple elevator (modeled as a motor acting against the force of gravity).
    • Field Summary

      Fields 
      Modifier and Type Field Description
      double ka  
      double kg  
      double ks  
      double kv  
    • Constructor Summary

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

      All Methods Instance Methods Concrete Methods 
      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 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.
    • Field Detail

      • ks

        public final double ks
      • kg

        public final double kg
      • kv

        public final double kv
      • ka

        public final double ka
    • Constructor Detail

      • ElevatorFeedforward

        public ElevatorFeedforward​(double ks,
                                   double kg,
                                   double kv,
                                   double ka)
        Creates a new ElevatorFeedforward with the specified gains. Units of the gain values will dictate units of the computed feedforward.
        Parameters:
        ks - The static gain.
        kg - The gravity gain.
        kv - The velocity gain.
        ka - The acceleration gain.
      • ElevatorFeedforward

        public ElevatorFeedforward​(double ks,
                                   double kg,
                                   double kv)
        Creates a new ElevatorFeedforward 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.
        kg - The gravity gain.
        kv - The velocity gain.
    • Method Detail

      • 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 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 elevator.
        acceleration - The acceleration of the elevator.
        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 elevator.
        acceleration - The acceleration of the elevator.
        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 elevator.
        velocity - The velocity of the elevator.
        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 elevator.
        velocity - The velocity of the elevator.
        Returns:
        The minimum possible acceleration at the given velocity.