WPILibC++ 2025.2.1
Loading...
Searching...
No Matches
frc::ElevatorFeedforward Class Reference

A helper class that computes feedforward outputs for a simple elevator (modeled as a motor acting against the force of gravity). More...

#include <frc/controller/ElevatorFeedforward.h>

Public Types

using Distance = units::meters
 
using Velocity
 
using Acceleration
 
using kv_unit = units::compound_unit<units::volts, units::inverse<Velocity>>
 
using ka_unit
 

Public Member Functions

constexpr ElevatorFeedforward (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 ElevatorFeedforward with the specified gains.
 
constexpr units::volt_t Calculate (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< 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< Velocity > currentVelocity) const
 Calculates the feedforward from the gains and setpoint assuming discrete control.
 
constexpr units::volt_t Calculate (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< VelocityMaxAchievableVelocity (units::volt_t maxVoltage, units::unit_t< Acceleration > acceleration)
 Calculates the maximum achievable velocity given a maximum voltage supply and an acceleration.
 
constexpr units::unit_t< VelocityMinAchievableVelocity (units::volt_t maxVoltage, units::unit_t< Acceleration > acceleration)
 Calculates the minimum achievable velocity given a maximum voltage supply and an acceleration.
 
constexpr units::unit_t< AccelerationMaxAchievableAcceleration (units::volt_t maxVoltage, units::unit_t< Velocity > velocity)
 Calculates the maximum achievable acceleration given a maximum voltage supply and a velocity.
 
constexpr units::unit_t< AccelerationMinAchievableAcceleration (units::volt_t maxVoltage, units::unit_t< Velocity > velocity)
 Calculates the minimum achievable acceleration given a maximum voltage supply 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_unitGetKv () const
 Returns the velocity gain.
 
constexpr units::unit_t< ka_unitGetKa () const
 Returns the acceleration gain.
 

Detailed Description

A helper class that computes feedforward outputs for a simple elevator (modeled as a motor acting against the force of gravity).

Member Typedef Documentation

◆ Acceleration

Initial value:
typename units::detail::compound_impl< U, Us... >::type compound_unit
Represents a unit type made up from other units.
Definition base.h:1438

◆ Distance

using frc::ElevatorFeedforward::Distance = units::meters

◆ ka_unit

◆ kv_unit

◆ Velocity

Constructor & Destructor Documentation

◆ ElevatorFeedforward()

frc::ElevatorFeedforward::ElevatorFeedforward ( 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 )
inlineconstexpr

Creates a new ElevatorFeedforward with the specified gains.

Parameters
kSThe static gain, in volts.
kGThe gravity gain, in volts.
kVThe velocity gain, in volt seconds per distance.
kAThe acceleration gain, in volt secondsĀ² per distance.
dtThe period in seconds.
Throws:
IllegalArgumentException for kv < zero.
Throws:
IllegalArgumentException for ka < zero.
Throws:
IllegalArgumentException for period ≤ zero.

Member Function Documentation

◆ Calculate() [1/4]

units::volt_t frc::ElevatorFeedforward::Calculate ( units::unit_t< Velocity > currentVelocity) const
inlineconstexpr

Calculates the feedforward from the gains and setpoint assuming discrete control.

Use this method when the setpoint does not change.

Parameters
currentVelocityThe velocity setpoint.
Returns
The computed feedforward, in volts.

◆ Calculate() [2/4]

units::volt_t frc::ElevatorFeedforward::Calculate ( units::unit_t< Velocity > currentVelocity,
units::unit_t< Velocity > nextVelocity ) const
inlineconstexpr

Calculates the feedforward from the gains and setpoints assuming discrete control.

Note this method is inaccurate when the velocity crosses 0.

Parameters
currentVelocityThe current velocity setpoint.
nextVelocityThe next velocity setpoint.
Returns
The computed feedforward, in volts.

◆ Calculate() [3/4]

units::volt_t frc::ElevatorFeedforward::Calculate ( units::unit_t< Velocity > currentVelocity,
units::unit_t< Velocity > nextVelocity,
units::second_t dt ) const
inline

Calculates the feedforward from the gains and setpoints assuming continuous control.

Parameters
currentVelocityThe current velocity setpoint.
nextVelocityThe next velocity setpoint.
dtTime between velocity setpoints in seconds.
Returns
The computed feedforward, in volts.

◆ Calculate() [4/4]

units::volt_t frc::ElevatorFeedforward::Calculate ( units::unit_t< Velocity > velocity,
units::unit_t< Acceleration > acceleration ) const
inlineconstexpr

Calculates the feedforward from the gains and setpoints assuming continuous control.

Parameters
velocityThe velocity setpoint.
accelerationThe acceleration setpoint.
Returns
The computed feedforward, in volts.
Deprecated
Use the current/next velocity overload instead.

◆ GetKa()

units::unit_t< ka_unit > frc::ElevatorFeedforward::GetKa ( ) const
inlineconstexpr

Returns the acceleration gain.

Returns
The acceleration gain.

◆ GetKg()

units::volt_t frc::ElevatorFeedforward::GetKg ( ) const
inlineconstexpr

Returns the gravity gain.

Returns
The gravity gain.

◆ GetKs()

units::volt_t frc::ElevatorFeedforward::GetKs ( ) const
inlineconstexpr

Returns the static gain.

Returns
The static gain.

◆ GetKv()

units::unit_t< kv_unit > frc::ElevatorFeedforward::GetKv ( ) const
inlineconstexpr

Returns the velocity gain.

Returns
The velocity gain.

◆ MaxAchievableAcceleration()

units::unit_t< Acceleration > frc::ElevatorFeedforward::MaxAchievableAcceleration ( units::volt_t maxVoltage,
units::unit_t< Velocity > velocity )
inlineconstexpr

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
maxVoltageThe maximum voltage that can be supplied to the elevator.
velocityThe velocity of the elevator.
Returns
The maximum possible acceleration at the given velocity.

◆ MaxAchievableVelocity()

units::unit_t< Velocity > frc::ElevatorFeedforward::MaxAchievableVelocity ( units::volt_t maxVoltage,
units::unit_t< Acceleration > acceleration )
inlineconstexpr

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
maxVoltageThe maximum voltage that can be supplied to the elevator.
accelerationThe acceleration of the elevator.
Returns
The maximum possible velocity at the given acceleration.

◆ MinAchievableAcceleration()

units::unit_t< Acceleration > frc::ElevatorFeedforward::MinAchievableAcceleration ( units::volt_t maxVoltage,
units::unit_t< Velocity > velocity )
inlineconstexpr

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
maxVoltageThe maximum voltage that can be supplied to the elevator.
velocityThe velocity of the elevator.
Returns
The minimum possible acceleration at the given velocity.

◆ MinAchievableVelocity()

units::unit_t< Velocity > frc::ElevatorFeedforward::MinAchievableVelocity ( units::volt_t maxVoltage,
units::unit_t< Acceleration > acceleration )
inlineconstexpr

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
maxVoltageThe maximum voltage that can be supplied to the elevator.
accelerationThe acceleration of the elevator.
Returns
The minimum possible velocity at the given acceleration.

The documentation for this class was generated from the following file: