Valkyrie 2026
Loading...
Searching...
No Matches
valor::NeoController Class Reference
Inheritance diagram for valor::NeoController:
valor::BaseController valor::Loggable

Public Member Functions

 NeoController (valor::NeoControllerType, int canID, valor::NeutralMode mode, bool inverted)
void ApplyConfig () override
units::turn_t GetPosition () const override
 Get the motors position.
units::ampere_t GetCurrent () const override
 Get the motors output current.
units::turns_per_second_t GetSpeed () const override
 Get the motors speed.
void SetEncoderPosition (units::turn_t position) override
units::turn_t GetAbsoluteEncoderPosition () const override
void SetContinuousWrap (bool wrap, bool saveImmediately=false)
void PositionSetter (units::turn_t positon, Output feedforward, int slot=0) override
 Send the motor to a specific position.
void SpeedSetter (units::turns_per_second_t speed, Output feedforward, int slot=0) override
 Send the motor to a specific speed.
void SetupFollower (int canID, bool followerInverted=false) override
 If a motor is paired with another motor, setup that other motor as a follower.
void SetPIDF (valor::PIDF<> pidf, int slot=0, bool saveImmediately=false) override
 Change the PIDF values for the motor.
void SetForwardLimit (units::turn_t forward, bool saveImmediately=false) override
 Set the forward soft limit for the motor.
void SetReverseLimit (units::turn_t reverse, bool saveImmediately=false) override
 Set the reverse soft limit for the motor.
void SetGearRatios (double rotorToSensor, double sensorToMech, bool saveImmediately=false) override
 Set the gear ratios for the motor.
void SetCurrentLimits (units::ampere_t statorCurrentLimit, bool saveImmediately=false)
void SetNeutralMode (valor::NeutralMode mode, bool saveImmediately=false) override
 Set the neutral mode of the motor.
void SetOpenLoopRamp (units::second_t time, bool saveImmediately=false) override
void PowerSetter (Output out) override
void LoggablePeriodic () override
 Periodic callback for logging updates.
units::volt_t CalculateAppliedVoltage () override
void SetSimState (units::turn_t pos, units::turns_per_second_t vel, units::turns_per_second_squared_t accel) override
void SetSimState (frc::sim::DCMotorSim &) override
void SetSimState (frc::sim::FlywheelSim &) override
virtual void SetSimState (frc::sim::SingleJointedArmSim &sim)
Public Member Functions inherited from valor::BaseController
 BaseController (frc::DCMotor _motorSpec)
 Construct a new Valor Controller object.
void OnLoggingStart () override
 Hook invoked when logging is started for this object.
OperationalMode GetOperationalMode () const
TuningMode GetTuningMode () const
constexpr units::turns_per_second_t GetMaxMechanismSpeed ()
 Get the mechanisms's maximum speed.
constexpr void SetVoltageCompensation (units::volt_t _voltageCompensation)
 Setup the voltage compensation for the motor.
constexpr units::volt_t GetVoltageCompensation ()
virtual constexpr void Reset ()
 Resets the motor and any state.
void SetPosition (units::turn_t position, Output feedforward=0, int slot=0)
void SetSpeed (units::turns_per_second_t speed, Output feedforward=0, int slot=0)
void SetPower (Output power)
void SetLimits (units::turn_t reverse, units::turn_t forward, bool saveImmediately=false)
 Set both soft limits for the motor.
constexpr void SetDefaultTuningMode (TuningMode mode)
Public Member Functions inherited from valor::Loggable
 Loggable (std::string_view name)
 Construct a Loggable that registers a top-level table name.
 Loggable (std::shared_ptr< nt::NetworkTable > table)
 Construct a Loggable that uses an existing NetworkTable.
 Loggable ()
 Default construct an uninitialized Loggable.
void LogChild (std::string_view name, Loggable *child)
 Register a child Loggable under a named subtree.
void LogChild (std::string_view name, wpi::Sendable *child)
 Register a child Sendable under a named subtree.
void SetPeriodicLevel (LogLevel level)
 Set the logging level for LoggablePeriodic.
template<typename T>
WriteLog (std::string_view field, const T &data, LogLevel level=LogLevel::Normal)
 Publish a value to NetworkTables under the given field.
template<typename T>
ReadLog (std::string_view field, const T &defaultValue={})
 Read a value from NetworkTables for the given field.
template<>
decltype(Loggable::subscribers) ::iterator addSubscriber (std::string_view field, const std::vector< bool > &defaultValue)
template<>
void WriteLogImpl (nt::Publisher *pub, const std::vector< bool > &data)
template<>
std::vector< bool > ReadLogImpl (nt::Subscriber *sub)

Static Public Member Functions

static constexpr frc::DCMotor getMotorSpec (NeoControllerType controllerType)
Static Public Member Functions inherited from valor::Loggable
static units::millisecond_t GetLoggingTime ()
static constexpr LoggableGetRoot ()

Additional Inherited Members

Public Types inherited from valor::BaseController
enum class  OperationalMode { NonOperational , Tuning , Operational }
enum class  TuningMode {
  Voltage , Current , DutyCycle , Speed ,
  Position
}
using Output = std::variant<units::volt_t, units::ampere_t, units::scalar_t>
Public Attributes inherited from valor::BaseController
frc::DCMotor motorSpec
double rotorToSensor
double sensorToMech
Protected Attributes inherited from valor::BaseController
units::volt_t voltageCompensation

Member Function Documentation

◆ ApplyConfig()

void valor::NeoController::ApplyConfig ( )
overridevirtual

Implements valor::BaseController.

◆ CalculateAppliedVoltage()

units::volt_t valor::NeoController::CalculateAppliedVoltage ( )
overridevirtual

Implements valor::BaseController.

◆ GetAbsoluteEncoderPosition()

units::turn_t valor::NeoController::GetAbsoluteEncoderPosition ( ) const
overridevirtual

Implements valor::BaseController.

◆ GetCurrent()

units::ampere_t valor::NeoController::GetCurrent ( ) const
overridevirtual

Get the motors output current.

Get the instantaneous current of the motor that the controller owns

Returns
units::ampere_t Instantaneous amperage of the motor

Implements valor::BaseController.

◆ GetPosition()

units::turn_t valor::NeoController::GetPosition ( ) const
overridevirtual

Get the motors position.

To be defined by the implemented BaseController class

Returns
units::turn_t Position of the motor

Implements valor::BaseController.

◆ GetSpeed()

units::turns_per_second_t valor::NeoController::GetSpeed ( ) const
overridevirtual

Get the motors speed.

To be defined by the implemented BaseController class

Returns
units::turns_per_second_t Speed of the motor

Implements valor::BaseController.

◆ LoggablePeriodic()

void valor::NeoController::LoggablePeriodic ( )
overridevirtual

Periodic callback for logging updates.

If a derived class needs to perform periodic updates to published values, override this method. It is intended to be called by the logging framework; this base class provides an empty implementation.

Reimplemented from valor::Loggable.

◆ PositionSetter()

void valor::NeoController::PositionSetter ( units::turn_t position,
Output feedforward,
int slot = 0 )
overridevirtual

Send the motor to a specific position.

Will use the motor's native trapezoidal motion profile to get the motor to that position. Can be tuned using the velocity and acceleration components of valor::PIDF via setPIDF

To be defined by the implemented BaseController class

Parameters
positionThe position to send the motor to
slotThe slot to use for PID gains

Implements valor::BaseController.

◆ PowerSetter()

void valor::NeoController::PowerSetter ( Output out)
overridevirtual

Implements valor::BaseController.

◆ SetEncoderPosition()

void valor::NeoController::SetEncoderPosition ( units::turn_t position)
overridevirtual

Implements valor::BaseController.

◆ SetForwardLimit()

void valor::NeoController::SetForwardLimit ( units::turn_t forward,
bool saveImmediately = false )
overridevirtual

Set the forward soft limit for the motor.

Soft limits restrict the reverse and forward direction to a certain range.

Parameters
forwardThe forward soft limit
saveImmediatelySend the config change immediately to the motor controller

Implements valor::BaseController.

◆ SetGearRatios()

void valor::NeoController::SetGearRatios ( double rotorToSensor,
double sensorToMech,
bool saveImmediately = false )
overridevirtual

Set the gear ratios for the motor.

Used to convert between the motor's rotor and the output shaft of the mechanism

To be defined by the implemented BaseController class

Parameters
rotorToSensorThe gear ratio from rotor to where the sensor is. Should be 1 if no external sensor
sensorToMechThe gear ratio from the sensor to the mechanism's output shaft. Should be the gear ratio if no external sensor
saveImmediatelyTell the underlying controller to apply the changes immediately, or to wait until a manual apply has been called

Implements valor::BaseController.

◆ SetNeutralMode()

void valor::NeoController::SetNeutralMode ( valor::NeutralMode mode,
bool saveImmediately = false )
overridevirtual

Set the neutral mode of the motor.

Parameters
modeThe neutral mode of the motor
saveImmediatelySend the config change immediately to the motor controller

Implements valor::BaseController.

◆ SetOpenLoopRamp()

void valor::NeoController::SetOpenLoopRamp ( units::second_t time,
bool saveImmediately = false )
overridevirtual

Implements valor::BaseController.

◆ SetPIDF()

void valor::NeoController::SetPIDF ( valor::PIDF<> pidf,
int slot = 0,
bool saveImmediately = false )
overridevirtual

Change the PIDF values for the motor.

valor::PIDF has some default values already set and tested, but if the system requires some changes, use this method to change those defaults.

Parameters
pidfThe new PIDF values to use for the system
slotSet which slot of the motor to apply the PIDF. 0 if slots aren't compatible
saveImmediatelySend the config change immediately to the motor controller

Implements valor::BaseController.

◆ SetReverseLimit()

void valor::NeoController::SetReverseLimit ( units::turn_t reverse,
bool saveImmediately = false )
overridevirtual

Set the reverse soft limit for the motor.

Soft limits restrict the reverse and reverse direction to a certain range.

Parameters
reverseThe reverse soft limit
saveImmediatelySend the config change immediately to the motor controller

Implements valor::BaseController.

◆ SetSimState() [1/4]

void valor::NeoController::SetSimState ( frc::sim::DCMotorSim & )
overridevirtual

Reimplemented from valor::BaseController.

◆ SetSimState() [2/4]

void valor::NeoController::SetSimState ( frc::sim::FlywheelSim & )
overridevirtual

Reimplemented from valor::BaseController.

◆ SetSimState() [3/4]

virtual void valor::BaseController::SetSimState ( frc::sim::SingleJointedArmSim & sim)
inlinevirtual

Reimplemented from valor::BaseController.

◆ SetSimState() [4/4]

void valor::NeoController::SetSimState ( units::turn_t pos,
units::turns_per_second_t vel,
units::turns_per_second_squared_t accel )
overridevirtual

Implements valor::BaseController.

◆ SetupFollower()

void valor::NeoController::SetupFollower ( int canID,
bool followerInverted = false )
overridevirtual

If a motor is paired with another motor, setup that other motor as a follower.

The follower motor will need a CAN ID, and then it will mimic and assume all other parameters of the lead motor

To be defined by the implemented BaseController class

Parameters
canIDThe CAN ID of the follower motor
followerInvertedWhether the follower is inverted or not. This is an absolute inversion, NOT relative to the master.

Implements valor::BaseController.

◆ SpeedSetter()

void valor::NeoController::SpeedSetter ( units::turns_per_second_t speed,
Output feedforward,
int slot = 0 )
overridevirtual

Send the motor to a specific speed.

Will use the motor's native trapezoidal motion profile to get the motor to that position. Can be tuned using the PIDF components of valor::PIDF via setPIDF

To be defined by the implemented BaseController class

Parameters
speedThe speed to set the motor to
slotThe slot to use for PID gains

Implements valor::BaseController.


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