Package edu.wpi.first.math.controller
Class ArmFeedforward
- java.lang.Object
-
- edu.wpi.first.math.controller.ArmFeedforward
-
public class ArmFeedforward extends Object
A helper class that computes feedforward outputs for a simple arm (modeled as a motor acting against the force of gravity on a beam suspended at an angle).
-
-
Constructor Summary
Constructors Constructor Description ArmFeedforward(double ks, double kcos, double kv)
Creates a new ArmFeedforward with the specified gains.ArmFeedforward(double ks, double kcos, double kv, double ka)
Creates a new ArmFeedforward with the specified gains.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
calculate(double positionRadians, double velocity)
Calculates the feedforward from the gains and velocity setpoint (acceleration is assumed to be zero).double
calculate(double positionRadians, double velocityRadPerSec, double accelRadPerSecSquared)
Calculates the feedforward from the gains and setpoints.double
maxAchievableAcceleration(double maxVoltage, double angle, double velocity)
Calculates the maximum achievable acceleration given a maximum voltage supply, a position, and a velocity.double
maxAchievableVelocity(double maxVoltage, double angle, double acceleration)
Calculates the maximum achievable velocity given a maximum voltage supply, a position, and an acceleration.double
minAchievableAcceleration(double maxVoltage, double angle, double velocity)
Calculates the minimum achievable acceleration given a maximum voltage supply, a position, and a velocity.double
minAchievableVelocity(double maxVoltage, double angle, double acceleration)
Calculates the minimum achievable velocity given a maximum voltage supply, a position, and an acceleration.
-
-
-
Constructor Detail
-
ArmFeedforward
public ArmFeedforward(double ks, double kcos, double kv, double ka)
Creates a new ArmFeedforward with the specified gains. Units of the gain values will dictate units of the computed feedforward.- Parameters:
ks
- The static gain.kcos
- The gravity gain.kv
- The velocity gain.ka
- The acceleration gain.
-
ArmFeedforward
public ArmFeedforward(double ks, double kcos, double kv)
Creates a new ArmFeedforward 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.kcos
- The gravity gain.kv
- The velocity gain.
-
-
Method Detail
-
calculate
public double calculate(double positionRadians, double velocityRadPerSec, double accelRadPerSecSquared)
Calculates the feedforward from the gains and setpoints.- Parameters:
positionRadians
- The position (angle) setpoint.velocityRadPerSec
- The velocity setpoint.accelRadPerSecSquared
- The acceleration setpoint.- Returns:
- The computed feedforward.
-
calculate
public double calculate(double positionRadians, double velocity)
Calculates the feedforward from the gains and velocity setpoint (acceleration is assumed to be zero).- Parameters:
positionRadians
- The position (angle) setpoint.velocity
- The velocity setpoint.- Returns:
- The computed feedforward.
-
maxAchievableVelocity
public double maxAchievableVelocity(double maxVoltage, double angle, double acceleration)
Calculates the maximum achievable velocity given a maximum voltage supply, a position, 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 arm.angle
- The angle of the arm.acceleration
- The acceleration of the arm.- Returns:
- The maximum possible velocity at the given acceleration and angle.
-
minAchievableVelocity
public double minAchievableVelocity(double maxVoltage, double angle, double acceleration)
Calculates the minimum achievable velocity given a maximum voltage supply, a position, 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 arm.angle
- The angle of the arm.acceleration
- The acceleration of the arm.- Returns:
- The minimum possible velocity at the given acceleration and angle.
-
maxAchievableAcceleration
public double maxAchievableAcceleration(double maxVoltage, double angle, double velocity)
Calculates the maximum achievable acceleration given a maximum voltage supply, a position, 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 arm.angle
- The angle of the arm.velocity
- The velocity of the arm.- Returns:
- The maximum possible acceleration at the given velocity.
-
minAchievableAcceleration
public double minAchievableAcceleration(double maxVoltage, double angle, double velocity)
Calculates the minimum achievable acceleration given a maximum voltage supply, a position, 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 arm.angle
- The angle of the arm.velocity
- The velocity of the arm.- Returns:
- The minimum possible acceleration at the given velocity.
-
-