WPILibC++ 2023.4.3
frc::SimpleMotorFeedforward< Distance > Class Template Reference

A helper class that computes feedforward voltages for a simple permanent-magnet DC motor. More...

#include <frc/controller/SimpleMotorFeedforward.h>

Public Types

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

Public Member Functions

constexpr SimpleMotorFeedforward ()=default
 
constexpr SimpleMotorFeedforward (units::volt_t kS, units::unit_t< kv_unit > kV, units::unit_t< ka_unit > kA=units::unit_t< ka_unit >(0))
 Creates a new SimpleMotorFeedforward with the specified gains. More...
 
constexpr units::volt_t Calculate (units::unit_t< Velocity > velocity, units::unit_t< Acceleration > acceleration=units::unit_t< Acceleration >(0)) const
 Calculates the feedforward from the gains and setpoints. More...
 
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. More...
 
constexpr units::unit_t< VelocityMaxAchievableVelocity (units::volt_t maxVoltage, units::unit_t< Acceleration > acceleration) const
 Calculates the maximum achievable velocity given a maximum voltage supply and an acceleration. More...
 
constexpr units::unit_t< VelocityMinAchievableVelocity (units::volt_t maxVoltage, units::unit_t< Acceleration > acceleration) const
 Calculates the minimum achievable velocity given a maximum voltage supply and an acceleration. More...
 
constexpr units::unit_t< AccelerationMaxAchievableAcceleration (units::volt_t maxVoltage, units::unit_t< Velocity > velocity) const
 Calculates the maximum achievable acceleration given a maximum voltage supply and a velocity. More...
 
constexpr units::unit_t< AccelerationMinAchievableAcceleration (units::volt_t maxVoltage, units::unit_t< Velocity > velocity) const
 Calculates the minimum achievable acceleration given a maximum voltage supply and a velocity. More...
 

Public Attributes

units::volt_t kS {0}
 
units::unit_t< kv_unitkV {0}
 
units::unit_t< ka_unitkA {0}
 

Detailed Description

template<class Distance>
class frc::SimpleMotorFeedforward< Distance >

A helper class that computes feedforward voltages for a simple permanent-magnet DC motor.

Member Typedef Documentation

◆ Acceleration

template<class Distance >
using frc::SimpleMotorFeedforward< Distance >::Acceleration = units::compound_unit<Velocity, units::inverse<units::seconds> >

◆ ka_unit

template<class Distance >
using frc::SimpleMotorFeedforward< Distance >::ka_unit = units::compound_unit<units::volts, units::inverse<Acceleration> >

◆ kv_unit

template<class Distance >
using frc::SimpleMotorFeedforward< Distance >::kv_unit = units::compound_unit<units::volts, units::inverse<Velocity> >

◆ Velocity

template<class Distance >
using frc::SimpleMotorFeedforward< Distance >::Velocity = units::compound_unit<Distance, units::inverse<units::seconds> >

Constructor & Destructor Documentation

◆ SimpleMotorFeedforward() [1/2]

template<class Distance >
constexpr frc::SimpleMotorFeedforward< Distance >::SimpleMotorFeedforward ( )
constexprdefault

◆ SimpleMotorFeedforward() [2/2]

template<class Distance >
constexpr frc::SimpleMotorFeedforward< Distance >::SimpleMotorFeedforward ( units::volt_t  kS,
units::unit_t< kv_unit kV,
units::unit_t< ka_unit kA = units::unit_t<ka_unit>(0) 
)
inlineconstexpr

Creates a new SimpleMotorFeedforward with the specified gains.

Parameters
kSThe static gain, in volts.
kVThe velocity gain, in volt seconds per distance.
kAThe acceleration gain, in volt secondsĀ² per distance.

Member Function Documentation

◆ Calculate() [1/2]

template<class Distance >
units::volt_t frc::SimpleMotorFeedforward< Distance >::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.

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

◆ Calculate() [2/2]

template<class Distance >
constexpr units::volt_t frc::SimpleMotorFeedforward< Distance >::Calculate ( units::unit_t< Velocity velocity,
units::unit_t< Acceleration acceleration = units::unit_t<Acceleration>(0) 
) const
inlineconstexpr

Calculates the feedforward from the gains and setpoints.

Parameters
velocityThe velocity setpoint, in distance per second.
accelerationThe acceleration setpoint, in distance per secondĀ².
Returns
The computed feedforward, in volts.

◆ MaxAchievableAcceleration()

template<class Distance >
constexpr units::unit_t< Acceleration > frc::SimpleMotorFeedforward< Distance >::MaxAchievableAcceleration ( units::volt_t  maxVoltage,
units::unit_t< Velocity velocity 
) const
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 motor.
velocityThe velocity of the motor.
Returns
The maximum possible acceleration at the given velocity.

◆ MaxAchievableVelocity()

template<class Distance >
constexpr units::unit_t< Velocity > frc::SimpleMotorFeedforward< Distance >::MaxAchievableVelocity ( units::volt_t  maxVoltage,
units::unit_t< Acceleration acceleration 
) const
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 motor.
accelerationThe acceleration of the motor.
Returns
The maximum possible velocity at the given acceleration.

◆ MinAchievableAcceleration()

template<class Distance >
constexpr units::unit_t< Acceleration > frc::SimpleMotorFeedforward< Distance >::MinAchievableAcceleration ( units::volt_t  maxVoltage,
units::unit_t< Velocity velocity 
) const
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 motor.
velocityThe velocity of the motor.
Returns
The minimum possible acceleration at the given velocity.

◆ MinAchievableVelocity()

template<class Distance >
constexpr units::unit_t< Velocity > frc::SimpleMotorFeedforward< Distance >::MinAchievableVelocity ( units::volt_t  maxVoltage,
units::unit_t< Acceleration acceleration 
) const
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 motor.
accelerationThe acceleration of the motor.
Returns
The minimum possible velocity at the given acceleration.

Member Data Documentation

◆ kA

template<class Distance >
units::unit_t<ka_unit> frc::SimpleMotorFeedforward< Distance >::kA {0}

◆ kS

template<class Distance >
units::volt_t frc::SimpleMotorFeedforward< Distance >::kS {0}

◆ kV

template<class Distance >
units::unit_t<kv_unit> frc::SimpleMotorFeedforward< Distance >::kV {0}

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