librmb 1.0
Rambunction 4330 Utility Library
Loading...
Searching...
No Matches
rmb::Feedforward< DistanceUnit > Class Template Referenceabstract

#include <rmb/motorcontrol/feedforward/Feedforward.h>

Inheritance diagram for rmb::Feedforward< DistanceUnit >:
rmb::ElevatorFeedforward< DistanceUnit > rmb::SimpleFeedforward< DistanceUnit >

Public Types

using Distance_t
 
using VelocityUnit
 
using Velocity_t
 
using AccelerationUnit
 
using Acceleration_t
 
using KsUnit = units::volts
 
using Ks_t = units::unit_t<KsUnit>
 
using KvUnit
 
using Kv_t = units::unit_t<KvUnit>
 
using KaUnit
 
using Ka_t = units::unit_t<KaUnit>
 

Public Member Functions

virtual units::volt_t calculate (Velocity_t velocity, Distance_t distance=Distance_t(0.0), Acceleration_t acceleration=Acceleration_t(0.0)) const =0
 
virtual Velocity_t maxAchievableVelocity (units::volt_t maxVoltage, Acceleration_t acceleration, Distance_t position) const =0
 
virtual Velocity_t minAchievableVelocity (units::volt_t maxVoltage, Acceleration_t acceleration, Distance_t position) const =0
 
virtual Acceleration_t maxAchievableAcceleration (units::volt_t maxVoltage, Velocity_t velocity, Distance_t position) const =0
 
virtual Acceleration_t minAchievableAcceleration (units::volt_t maxVoltage, Velocity_t velocity, Distance_t position) const =0
 
virtual Kv_t getVelocityGain () const =0
 
virtual Ka_t getAcclerationGain () const =0
 
virtual units::volt_t calculateStatic (Velocity_t velocity, Distance_t position=Distance_t(0)) const =0
 

Detailed Description

template<typename DistanceUnit>
class rmb::Feedforward< DistanceUnit >

Generalized interface for voltage feedforwards.

Template Parameters
DistanceUnitBase unit of distance for feedforward inputs.

Member Typedef Documentation

◆ Acceleration_t

template<typename DistanceUnit >
using rmb::Feedforward< DistanceUnit >::Acceleration_t
Initial value:
units::unit_t<
units::compound_unit< VelocityUnit, units::inverse< units::seconds > > AccelerationUnit
Definition Feedforward.h:26

Type declaration for FeedForward<DistanceUnit>::AccelerationUnit

◆ AccelerationUnit

template<typename DistanceUnit >
using rmb::Feedforward< DistanceUnit >::AccelerationUnit
Initial value:
units::compound_unit<VelocityUnit,
units::inverse<units::seconds>>
units::compound_unit< DistanceUnit, units::inverse< units::seconds > > VelocityUnit
Definition Feedforward.h:19

VelocityUnit / Second

◆ Distance_t

Initial value:
units::unit_t<DistanceUnit>

User specified distance type

◆ Ka_t

template<typename DistanceUnit >
using rmb::Feedforward< DistanceUnit >::Ka_t = units::unit_t<KaUnit>

Type declaration for FeedForward<DistanceUnit>::KaUnit

◆ KaUnit

Initial value:
units::compound_unit<
units::volts,
units::inverse<AccelerationUnit>>

Acceleration gain unit is volts / AcclerationUnit

◆ Ks_t

template<typename DistanceUnit >
using rmb::Feedforward< DistanceUnit >::Ks_t = units::unit_t<KsUnit>

Type declaration for Feedforward<DistanceUnit>::KsUnit

◆ KsUnit

template<typename DistanceUnit >
using rmb::Feedforward< DistanceUnit >::KsUnit = units::volts

Static gain is in volts

◆ Kv_t

template<typename DistanceUnit >
using rmb::Feedforward< DistanceUnit >::Kv_t = units::unit_t<KvUnit>

Type declaration for FeedForward<DistanceUnit>::KvUnit

◆ KvUnit

Initial value:
units::compound_unit<
units::volts, units::inverse<VelocityUnit>>

Velocity gain unit is Volts / VelocityUnit

◆ Velocity_t

Initial value:
units::unit_t<VelocityUnit>

Type declaration for FeedForward<DistanceUnit>::VelocityUnit

◆ VelocityUnit

Initial value:
units::compound_unit<DistanceUnit,
units::inverse<units::seconds>>

DistanceUnit / Second

Member Function Documentation

◆ calculate()

template<typename DistanceUnit >
virtual units::volt_t rmb::Feedforward< DistanceUnit >::calculate ( Velocity_t velocity,
Distance_t distance = Distance_t(0.0),
Acceleration_t acceleration = Acceleration_t(0.0) ) const
pure virtual

Calculates a feedforward voltage at a desired velocity, acceleration, and distance.

Parameters
velocityDesired Velocity
distancePosition of Motor (Not always useful).
accelerationDesired Acceleration

◆ calculateStatic()

template<typename DistanceUnit >
virtual units::volt_t rmb::Feedforward< DistanceUnit >::calculateStatic ( Velocity_t velocity,
Distance_t position = Distance_t(0) ) const
pure virtual

Calculates the static gain of the feedforward at a given position. This is the value added on tot he end of the feedforward calculation. A velocity term is included only to determine the direction of movment. This is useful when adding feedforwads to the PID loops of motor controllers.

Parameters
velocityterm only to determine the direction of movment (positive or negetive).
positionpositon at which the static gain is calculated.
Returns
Static gain.

◆ getAcclerationGain()

template<typename DistanceUnit >
virtual Ka_t rmb::Feedforward< DistanceUnit >::getAcclerationGain ( ) const
pure virtual

Return the acceleration gain of feed forward. This is the value that acceleration is multiplied by when calculating voltage. This is useful when adding feedforwads to the PID loops of motor controllers.

Returns
Acceleration gain.

Implemented in rmb::ArmFeedforward, rmb::ElevatorFeedforward< DistanceUnit >, and rmb::SimpleFeedforward< DistanceUnit >.

◆ getVelocityGain()

template<typename DistanceUnit >
virtual Kv_t rmb::Feedforward< DistanceUnit >::getVelocityGain ( ) const
pure virtual

Return the velocity gain of feed forward. This is the value that velocity is multiplied by when calculating voltage. This is useful when adding feedforwads to the PID loops of motor controllers.

Returns
Velocity gain.

Implemented in rmb::ArmFeedforward, rmb::ElevatorFeedforward< DistanceUnit >, and rmb::SimpleFeedforward< DistanceUnit >.

◆ maxAchievableAcceleration()

template<typename DistanceUnit >
virtual Acceleration_t rmb::Feedforward< DistanceUnit >::maxAchievableAcceleration ( units::volt_t maxVoltage,
Velocity_t velocity,
Distance_t position ) const
pure virtual

Calculates the maximum achievable accceleration of a component.

Parameters
maxVoltagemax voltage that can be applied
velocityvelocity that this acceleration is achived at
positionposition that this acceleration is achived at
Returns
Maximum achivable acceleration.

◆ maxAchievableVelocity()

template<typename DistanceUnit >
virtual Velocity_t rmb::Feedforward< DistanceUnit >::maxAchievableVelocity ( units::volt_t maxVoltage,
Acceleration_t acceleration,
Distance_t position ) const
pure virtual

Calculates the minimum achievable velocity of a component.

Parameters
maxVoltagemax voltage that can be applied
accelerationacceleration that this velocity is achived at
positionposition that this veloocity is achived at
Returns
Maximum achivable velocity.

◆ minAchievableAcceleration()

template<typename DistanceUnit >
virtual Acceleration_t rmb::Feedforward< DistanceUnit >::minAchievableAcceleration ( units::volt_t maxVoltage,
Velocity_t velocity,
Distance_t position ) const
pure virtual

Calculates the minimum achievable accceleration of a component.

Parameters
maxVoltagemax voltage that can be applied
velocityvelocity that this acceleration is achived at
positionposition that this acceleration is achived at
Returns
Minimum achivable acceleration.

◆ minAchievableVelocity()

template<typename DistanceUnit >
virtual Velocity_t rmb::Feedforward< DistanceUnit >::minAchievableVelocity ( units::volt_t maxVoltage,
Acceleration_t acceleration,
Distance_t position ) const
pure virtual

Calculates the minimum achievable velocity of a component.

Parameters
maxVoltagemax voltage that can be applied
accelerationacceleration that this velocity is achived at
positionposition that this veloocity is achived at
Returns
Minimum achivable velocity.

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