WPILibC++ 2025.2.1
|
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). More...
#include <frc/controller/ArmFeedforward.h>
Public Types | |
using | Angle = units::radians |
using | Velocity = units::radians_per_second |
using | Acceleration |
using | kv_unit |
using | ka_unit |
Public Member Functions | |
constexpr | ArmFeedforward (units::volt_t kS, units::volt_t kG, units::unit_t< kv_unit > kV, units::unit_t< ka_unit > kA=units::unit_t< ka_unit >(0), units::second_t dt=20_ms) |
Creates a new ArmFeedforward with the specified gains. | |
constexpr units::volt_t | Calculate (units::unit_t< Angle > angle, units::unit_t< Velocity > velocity, units::unit_t< Acceleration > acceleration) const |
Calculates the feedforward from the gains and setpoints assuming continuous control. | |
units::volt_t | Calculate (units::unit_t< Angle > currentAngle, units::unit_t< Velocity > currentVelocity, units::unit_t< Velocity > nextVelocity, units::second_t dt) const |
Calculates the feedforward from the gains and setpoints assuming continuous control. | |
constexpr units::volt_t | Calculate (units::unit_t< Angle > currentAngle, units::unit_t< Velocity > currentVelocity) const |
Calculates the feedforward from the gains and setpoint assuming discrete control. | |
units::volt_t | Calculate (units::unit_t< Angle > currentAngle, units::unit_t< Velocity > currentVelocity, units::unit_t< Velocity > nextVelocity) const |
Calculates the feedforward from the gains and setpoints assuming discrete control. | |
constexpr units::unit_t< Velocity > | MaxAchievableVelocity (units::volt_t maxVoltage, units::unit_t< Angle > angle, units::unit_t< Acceleration > acceleration) |
Calculates the maximum achievable velocity given a maximum voltage supply, a position, and an acceleration. | |
constexpr units::unit_t< Velocity > | MinAchievableVelocity (units::volt_t maxVoltage, units::unit_t< Angle > angle, units::unit_t< Acceleration > acceleration) |
Calculates the minimum achievable velocity given a maximum voltage supply, a position, and an acceleration. | |
constexpr units::unit_t< Acceleration > | MaxAchievableAcceleration (units::volt_t maxVoltage, units::unit_t< Angle > angle, units::unit_t< Velocity > velocity) |
Calculates the maximum achievable acceleration given a maximum voltage supply, a position, and a velocity. | |
constexpr units::unit_t< Acceleration > | MinAchievableAcceleration (units::volt_t maxVoltage, units::unit_t< Angle > angle, units::unit_t< Velocity > velocity) |
Calculates the minimum achievable acceleration given a maximum voltage supply, a position, and a velocity. | |
constexpr units::volt_t | GetKs () const |
Returns the static gain. | |
constexpr units::volt_t | GetKg () const |
Returns the gravity gain. | |
constexpr units::unit_t< kv_unit > | GetKv () const |
Returns the velocity gain. | |
constexpr units::unit_t< ka_unit > | GetKa () const |
Returns the acceleration gain. | |
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).
using frc::ArmFeedforward::Angle = units::radians |
using frc::ArmFeedforward::Velocity = units::radians_per_second |
|
inlineconstexpr |
Creates a new ArmFeedforward with the specified gains.
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. |
|
inlineconstexpr |
Calculates the feedforward from the gains and setpoints assuming continuous control.
angle | The angle setpoint, in radians. 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 setpoint. |
acceleration | The acceleration setpoint. |
|
inlineconstexpr |
Calculates the feedforward from the gains and setpoint assuming discrete control.
Use this method when the velocity does not change.
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. |
units::volt_t frc::ArmFeedforward::Calculate | ( | units::unit_t< Angle > | currentAngle, |
units::unit_t< Velocity > | currentVelocity, | ||
units::unit_t< Velocity > | nextVelocity ) const |
Calculates the feedforward from the gains and setpoints assuming discrete control.
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. |
|
inline |
Calculates the feedforward from the gains and setpoints assuming continuous control.
currentAngle | The current angle in radians. 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 setpoint. |
nextVelocity | The next velocity setpoint. |
dt | Time between velocity setpoints in seconds. |
|
inlineconstexpr |
Returns the acceleration gain.
|
inlineconstexpr |
Returns the gravity gain.
|
inlineconstexpr |
Returns the static gain.
|
inlineconstexpr |
Returns the velocity gain.
|
inlineconstexpr |
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.
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. |
|
inlineconstexpr |
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.
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. |
|
inlineconstexpr |
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.
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. |
|
inlineconstexpr |
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.
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. |