ArmFeedforward
- class wpimath.ArmFeedforward(kS: wpimath.units.volts, kG: wpimath.units.volts, kV: wpimath.units.volt_seconds_per_radian, kA: wpimath.units.volt_seconds_squared_per_radian = 0.0, dt: wpimath.units.seconds = 0.02)
Bases:
pybind11_objectA 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).
Creates a new ArmFeedforward with the specified gains.
- Parameters:
kS – The static gain, in volts.
kG – The gravity gain, in volts.
kV – The velocity gain, in volt seconds per radian.
kA – The acceleration gain, in volt seconds² per radian.
dt – The period in seconds. @throws IllegalArgumentException for kv < zero. @throws IllegalArgumentException for ka < zero. @throws IllegalArgumentException for period ≤ zero.
- WPIStruct = <capsule object "WPyStruct">
- calculate(*args, **kwargs)
Overloaded function.
calculate(self: wpimath._wpimath.ArmFeedforward, currentAngle: wpimath.units.radians, currentVelocity: wpimath.units.radians_per_second) -> wpimath.units.volts
Calculates the feedforward from the gains and setpoint assuming discrete control. Use this method when the velocity does not change.
- Parameters:
currentAngle – The current angle. This angle should be measured from the horizontal (i.e. if the provided angle is 0, the arm should be parallel to the floor). If your encoder does not follow this convention, an offset should be added.
currentVelocity – The current velocity.
- Returns:
The computed feedforward in volts.
calculate(self: wpimath._wpimath.ArmFeedforward, currentAngle: wpimath.units.radians, currentVelocity: wpimath.units.radians_per_second, nextVelocity: wpimath.units.radians_per_second) -> wpimath.units.volts
Calculates the feedforward from the gains and setpoints assuming discrete control.
- Parameters:
currentAngle – The current angle. This angle should be measured from the horizontal (i.e. if the provided angle is 0, the arm should be parallel to the floor). If your encoder does not follow this convention, an offset should be added.
currentVelocity – The current velocity.
nextVelocity – The next velocity.
- Returns:
The computed feedforward in volts.
- getKa() wpimath.units.volt_seconds_squared_per_radian
Returns the acceleration gain.
- Returns:
The acceleration gain.
- getKg() wpimath.units.volts
Returns the gravity gain.
- Returns:
The gravity gain.
- getKs() wpimath.units.volts
Returns the static gain.
- Returns:
The static gain.
- getKv() wpimath.units.volt_seconds_per_radian
Returns the velocity gain.
- Returns:
The velocity gain.
- maxAchievableAcceleration(maxVoltage: wpimath.units.volts, angle: wpimath.units.radians, velocity: wpimath.units.radians_per_second) wpimath.units.radians_per_second_squared
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. This angle should be measured from the horizontal (i.e. if the provided angle is 0, the arm should be parallel to the floor). If your encoder does not follow this convention, an offset should be added.
velocity – The velocity of the arm.
- Returns:
The maximum possible acceleration at the given velocity and angle.
- maxAchievableVelocity(maxVoltage: wpimath.units.volts, angle: wpimath.units.radians, acceleration: wpimath.units.radians_per_second_squared) wpimath.units.radians_per_second
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. This angle should be measured from the horizontal (i.e. if the provided angle is 0, the arm should be parallel to the floor). If your encoder does not follow this convention, an offset should be added.
acceleration – The acceleration of the arm.
- Returns:
The maximum possible velocity at the given acceleration and angle.
- minAchievableAcceleration(maxVoltage: wpimath.units.volts, angle: wpimath.units.radians, velocity: wpimath.units.radians_per_second) wpimath.units.radians_per_second_squared
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. This angle should be measured from the horizontal (i.e. if the provided angle is 0, the arm should be parallel to the floor). If your encoder does not follow this convention, an offset should be added.
velocity – The velocity of the arm.
- Returns:
The minimum possible acceleration at the given velocity and angle.
- minAchievableVelocity(maxVoltage: wpimath.units.volts, angle: wpimath.units.radians, acceleration: wpimath.units.radians_per_second_squared) wpimath.units.radians_per_second
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. This angle should be measured from the horizontal (i.e. if the provided angle is 0, the arm should be parallel to the floor). If your encoder does not follow this convention, an offset should be added.
acceleration – The acceleration of the arm.
- Returns:
The minimum possible velocity at the given acceleration and angle.
- setKa(kA: wpimath.units.volt_seconds_squared_per_radian) None
Sets the acceleration gain.
- Parameters:
kA – The acceleration gain.
- setKg(kG: wpimath.units.volts) None
Sets the gravity gain.
- Parameters:
kG – The gravity gain.
- setKs(kS: wpimath.units.volts) None
Sets the static gain.
- Parameters:
kS – The static gain.
- setKv(kV: wpimath.units.volt_seconds_per_radian) None
Sets the velocity gain.
- Parameters:
kV – The velocity gain.