Package edu.wpi.first.math.controller
Class ElevatorFeedforward
java.lang.Object
edu.wpi.first.math.controller.ElevatorFeedforward
- All Implemented Interfaces:
ProtobufSerializable
,StructSerializable
,WPISerializable
public class ElevatorFeedforward extends Object implements ProtobufSerializable, StructSerializable
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
The acceleration gain.double
kg
The gravity gain.double
ks
The static gain.double
kv
The velocity gain.static ElevatorFeedforwardProto
proto
ElevatorFeedforward protobuf for serialization.static ElevatorFeedforwardStruct
struct
ElevatorFeedforward struct for serialization. -
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
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.
-
Field Details
-
Constructor Details
-
ElevatorFeedforward
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.- Throws:
IllegalArgumentException
- for kv < zero.IllegalArgumentException
- for ka < zero.
-
ElevatorFeedforward
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 Details
-
calculate
Calculates the feedforward from the gains and setpoints.- Parameters:
velocity
- The velocity setpoint.acceleration
- The acceleration setpoint.- Returns:
- The computed feedforward.
-
calculate
Calculates the feedforward from the gains and setpoints.Note this method is inaccurate when the velocity crosses 0.
- Parameters:
currentVelocity
- The current velocity setpoint.nextVelocity
- The next velocity setpoint.dtSeconds
- Time between velocity setpoints in seconds.- Returns:
- The computed feedforward.
-
calculate
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
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
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
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
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.
-