WPILibC++ 2027.0.0-alpha-4
Loading...
Searching...
No Matches
wpi::math::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 <wpi/math/controller/ElevatorFeedforward.hpp>

Public Types

using Distance = wpi::units::meters
using Velocity
using Acceleration
using kv_unit
using ka_unit

Public Member Functions

constexpr ElevatorFeedforward (wpi::units::volt_t kS, wpi::units::volt_t kG, wpi::units::unit_t< kv_unit > kV, wpi::units::unit_t< ka_unit > kA=wpi::units::unit_t< ka_unit >(0), wpi::units::second_t dt=20_ms)
 Creates a new ElevatorFeedforward with the specified gains.
constexpr wpi::units::volt_t Calculate (wpi::units::unit_t< Velocity > currentVelocity) const
 Calculates the feedforward from the gains and setpoint assuming discrete control.
constexpr wpi::units::volt_t Calculate (wpi::units::unit_t< Velocity > currentVelocity, wpi::units::unit_t< Velocity > nextVelocity) const
 Calculates the feedforward from the gains and setpoints assuming discrete control.
constexpr wpi::units::unit_t< VelocityMaxAchievableVelocity (wpi::units::volt_t maxVoltage, wpi::units::unit_t< Acceleration > acceleration)
 Calculates the maximum achievable velocity given a maximum voltage supply and an acceleration.
constexpr wpi::units::unit_t< VelocityMinAchievableVelocity (wpi::units::volt_t maxVoltage, wpi::units::unit_t< Acceleration > acceleration)
 Calculates the minimum achievable velocity given a maximum voltage supply and an acceleration.
constexpr wpi::units::unit_t< AccelerationMaxAchievableAcceleration (wpi::units::volt_t maxVoltage, wpi::units::unit_t< Velocity > velocity)
 Calculates the maximum achievable acceleration given a maximum voltage supply and a velocity.
constexpr wpi::units::unit_t< AccelerationMinAchievableAcceleration (wpi::units::volt_t maxVoltage, wpi::units::unit_t< Velocity > velocity)
 Calculates the minimum achievable acceleration given a maximum voltage supply and a velocity.
constexpr void SetKs (wpi::units::volt_t kS)
 Sets the static gain.
constexpr void SetKg (wpi::units::volt_t kG)
 Sets the gravity gain.
constexpr void SetKv (wpi::units::unit_t< kv_unit > kV)
 Sets the velocity gain.
constexpr void SetKa (wpi::units::unit_t< ka_unit > kA)
 Sets the acceleration gain.
constexpr wpi::units::volt_t GetKs () const
 Returns the static gain.
constexpr wpi::units::volt_t GetKg () const
 Returns the gravity gain.
constexpr wpi::units::unit_t< kv_unitGetKv () const
 Returns the velocity gain.
constexpr wpi::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:
wpi::units::compound_unit<Velocity,
wpi::units::inverse<wpi::units::seconds>>
wpi::units::compound_unit< Distance, wpi::units::inverse< wpi::units::seconds > > Velocity
Definition TrapezoidProfile.hpp:49

◆ Distance

using wpi::math::ElevatorFeedforward::Distance = wpi::units::meters

◆ ka_unit

Initial value:
wpi::units::compound_unit<wpi::units::volts,
wpi::units::inverse<Acceleration>>

◆ kv_unit

Initial value:
wpi::units::compound_unit<wpi::units::volts,
wpi::units::inverse<Velocity>>

◆ Velocity

Initial value:
wpi::units::compound_unit<Distance,
wpi::units::inverse<wpi::units::seconds>>
wpi::units::meters Distance
Definition ElevatorFeedforward.hpp:22

Constructor & Destructor Documentation

◆ ElevatorFeedforward()

wpi::math::ElevatorFeedforward::ElevatorFeedforward ( wpi::units::volt_t kS,
wpi::units::volt_t kG,
wpi::units::unit_t< kv_unit > kV,
wpi::units::unit_t< ka_unit > kA = wpi::units::unit_t<ka_unit>(0),
wpi::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/2]

wpi::units::volt_t wpi::math::ElevatorFeedforward::Calculate ( wpi::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/2]

wpi::units::volt_t wpi::math::ElevatorFeedforward::Calculate ( wpi::units::unit_t< Velocity > currentVelocity,
wpi::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.

◆ GetKa()

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

Returns the acceleration gain.

Returns
The acceleration gain.

◆ GetKg()

wpi::units::volt_t wpi::math::ElevatorFeedforward::GetKg ( ) const
inlineconstexpr

Returns the gravity gain.

Returns
The gravity gain.

◆ GetKs()

wpi::units::volt_t wpi::math::ElevatorFeedforward::GetKs ( ) const
inlineconstexpr

Returns the static gain.

Returns
The static gain.

◆ GetKv()

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

Returns the velocity gain.

Returns
The velocity gain.

◆ MaxAchievableAcceleration()

wpi::units::unit_t< Acceleration > wpi::math::ElevatorFeedforward::MaxAchievableAcceleration ( wpi::units::volt_t maxVoltage,
wpi::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()

wpi::units::unit_t< Velocity > wpi::math::ElevatorFeedforward::MaxAchievableVelocity ( wpi::units::volt_t maxVoltage,
wpi::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()

wpi::units::unit_t< Acceleration > wpi::math::ElevatorFeedforward::MinAchievableAcceleration ( wpi::units::volt_t maxVoltage,
wpi::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()

wpi::units::unit_t< Velocity > wpi::math::ElevatorFeedforward::MinAchievableVelocity ( wpi::units::volt_t maxVoltage,
wpi::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.

◆ SetKa()

void wpi::math::ElevatorFeedforward::SetKa ( wpi::units::unit_t< ka_unit > kA)
inlineconstexpr

Sets the acceleration gain.

Parameters
kAThe acceleration gain.

◆ SetKg()

void wpi::math::ElevatorFeedforward::SetKg ( wpi::units::volt_t kG)
inlineconstexpr

Sets the gravity gain.

Parameters
kGThe gravity gain.

◆ SetKs()

void wpi::math::ElevatorFeedforward::SetKs ( wpi::units::volt_t kS)
inlineconstexpr

Sets the static gain.

Parameters
kSThe static gain.

◆ SetKv()

void wpi::math::ElevatorFeedforward::SetKv ( wpi::units::unit_t< kv_unit > kV)
inlineconstexpr

Sets the velocity gain.

Parameters
kVThe velocity gain.

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