SubZero Common
Common library components for an FRC CommandRobot
Loading...
Searching...
No Matches
subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig > Class Template Reference

Combines a motor, motor drvier, relative encoder, and absolute encoder into a single wrapper; helpful for absolute positioning, setting velocities, or tuning PID values. More...

#include <PidMotorController.h>

+ Inheritance diagram for subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >:
+ Collaboration diagram for subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >:

Public Member Functions

 PidMotorController (std::string name, TMotor &motor, TRelativeEncoder &encoder, TController &controller, PidSettings pidSettings, TAbsoluteEncoder *absEncoder, units::revolutions_per_minute_t maxRpm)
 Construct a new PidMotorController.
 
void Set (double percentage) override
 Set the motor to a percentage of max voltage.
 
void Set (units::volt_t volts) override
 Set a motor to a voltage.
 
void SetPidTolerance (double tolerance) override
 Absolute positioning is considered 'Done' when within this zone.
 
void Update () override
 ! Call this every loop in Periodic !
 
void RunWithVelocity (units::revolutions_per_minute_t rpm) override
 Set to this velocity.
 
void RunWithVelocity (double percentage) override
 Set to a percentage of max RPM.
 
void RunToPosition (double position) override
 Enables absolute positioning and sets the target to the position.
 
virtual void ResetEncoder () override
 
double GetEncoderPosition () override
 
std::optional< double > GetAbsoluteEncoderPosition () override
 
void SetEncoderConversionFactor (double factor) override
 Sets the multiplier for going between encoder ticks and actual distance.
 
void SetAbsoluteEncoderConversionFactor (double factor) override
 Sets the multiplier for going between encoder ticks and actual distance.
 
void Stop () override
 Disable absolute positioning and stop the motor.
 
const PidSettingsGetPidSettings () override
 
void UpdatePidSettings (PidSettings settings)
 
- Public Member Functions inherited from subzero::IPidMotorController
 IPidMotorController (std::string name)
 

Protected Attributes

TMotor & m_motor
 
TController & m_controller
 
TRelativeEncoder & m_encoder
 
TAbsoluteEncoder * m_absEncoder
 
TPidConfig m_config
 
PidSettings m_settings
 
frc::PIDController m_pidController
 
bool m_absolutePositionEnabled = false
 
double m_absoluteTarget = 0
 
const units::revolutions_per_minute_t m_maxRpm
 
bool m_isInitialized
 

Additional Inherited Members

- Public Attributes inherited from subzero::IPidMotorController
const std::string m_name
 

Detailed Description

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
class subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >

Combines a motor, motor drvier, relative encoder, and absolute encoder into a single wrapper; helpful for absolute positioning, setting velocities, or tuning PID values.

Template Parameters
TMotor
TController
TRelativeEncoder
TAbsoluteEncoder

Definition at line 33 of file PidMotorController.h.

Constructor & Destructor Documentation

◆ PidMotorController()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::PidMotorController ( std::string name,
TMotor & motor,
TRelativeEncoder & encoder,
TController & controller,
PidSettings pidSettings,
TAbsoluteEncoder * absEncoder,
units::revolutions_per_minute_t maxRpm )
explicit

Construct a new PidMotorController.

Parameters
nameDisplay name in SmartDashboard
motor
encoder
controller
pidSettingsInitial PID settings
absEncoderSet to nullptr for a disconnected encoder
maxRpmMax RPM of the motor; used to set velocity based on percentage

Member Function Documentation

◆ GetAbsoluteEncoderPosition()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
std::optional< double > subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::GetAbsoluteEncoderPosition ( )
overridevirtual

◆ GetEncoderPosition()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
double subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::GetEncoderPosition ( void )
inlineoverridevirtual

Implements subzero::IPidMotorController.

Definition at line 108 of file PidMotorController.h.

◆ GetPidSettings()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
const PidSettings & subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::GetPidSettings ( void )
inlineoverridevirtual

Implements subzero::IPidMotorController.

Definition at line 152 of file PidMotorController.h.

◆ ResetEncoder()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
virtual void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::ResetEncoder ( void )
inlineoverridevirtual

Implements subzero::IPidMotorController.

Definition at line 103 of file PidMotorController.h.

◆ RunToPosition()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::RunToPosition ( double position)
overridevirtual

Enables absolute positioning and sets the target to the position.

Parameters
position

Implements subzero::IPidMotorController.

◆ RunWithVelocity() [1/2]

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::RunWithVelocity ( double percentage)
overridevirtual

Set to a percentage of max RPM.

Parameters
percentage

Implements subzero::IPidMotorController.

◆ RunWithVelocity() [2/2]

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::RunWithVelocity ( units::revolutions_per_minute_t rpm)
overridevirtual

Set to this velocity.

Parameters
rpm

Implements subzero::IPidMotorController.

◆ Set() [1/2]

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::Set ( double percentage)
overridevirtual

Set the motor to a percentage of max voltage.

Parameters
percentage

Implements subzero::IPidMotorController.

◆ Set() [2/2]

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::Set ( units::volt_t volts)
overridevirtual

Set a motor to a voltage.

Parameters
volts

Implements subzero::IPidMotorController.

◆ SetAbsoluteEncoderConversionFactor()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::SetAbsoluteEncoderConversionFactor ( double factor)
inlineoverridevirtual

Sets the multiplier for going between encoder ticks and actual distance.

Parameters
factor

Implements subzero::IPidMotorController.

Definition at line 135 of file PidMotorController.h.

◆ SetEncoderConversionFactor()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::SetEncoderConversionFactor ( double factor)
inlineoverridevirtual

Sets the multiplier for going between encoder ticks and actual distance.

Parameters
factor

Implements subzero::IPidMotorController.

Definition at line 120 of file PidMotorController.h.

◆ SetPidTolerance()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::SetPidTolerance ( double tolerance)
overridevirtual

Absolute positioning is considered 'Done' when within this zone.

Parameters
tolerance

Implements subzero::IPidMotorController.

◆ Stop()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::Stop ( )
overridevirtual

Disable absolute positioning and stop the motor.

Implements subzero::IPidMotorController.

◆ Update()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::Update ( )
overridevirtual

! Call this every loop in Periodic !

Implements subzero::IPidMotorController.

◆ UpdatePidSettings()

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
void subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::UpdatePidSettings ( PidSettings settings)
virtual

Member Data Documentation

◆ m_absEncoder

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
TAbsoluteEncoder* subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_absEncoder
protected

Definition at line 160 of file PidMotorController.h.

◆ m_absolutePositionEnabled

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
bool subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_absolutePositionEnabled = false
protected

Definition at line 164 of file PidMotorController.h.

◆ m_absoluteTarget

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
double subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_absoluteTarget = 0
protected

Definition at line 165 of file PidMotorController.h.

◆ m_config

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
TPidConfig subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_config
protected

Definition at line 161 of file PidMotorController.h.

◆ m_controller

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
TController& subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_controller
protected

Definition at line 158 of file PidMotorController.h.

◆ m_encoder

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
TRelativeEncoder& subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_encoder
protected

Definition at line 159 of file PidMotorController.h.

◆ m_isInitialized

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
bool subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_isInitialized
protected

Definition at line 167 of file PidMotorController.h.

◆ m_maxRpm

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
const units::revolutions_per_minute_t subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_maxRpm
protected

Definition at line 166 of file PidMotorController.h.

◆ m_motor

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
TMotor& subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_motor
protected

Definition at line 157 of file PidMotorController.h.

◆ m_pidController

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
frc::PIDController subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_pidController
protected

Definition at line 163 of file PidMotorController.h.

◆ m_settings

template<typename TMotor, typename TController, typename TRelativeEncoder, typename TAbsoluteEncoder, typename TPidConfig>
PidSettings subzero::PidMotorController< TMotor, TController, TRelativeEncoder, TAbsoluteEncoder, TPidConfig >::m_settings
protected

Definition at line 162 of file PidMotorController.h.


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