Package swervelib.motors
Class TalonFXSwerve
java.lang.Object
swervelib.motors.SwerveMotor
swervelib.motors.TalonFXSwerve
TalonFX Swerve Motor. Made by Team 1466 WebbRobotics.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final booleanWhether the absolute encoder is integrated.private booleanIf the TalonFX configuration has changed.private final com.ctre.phoenix.motorcontrol.can.TalonFXConfigurationCurrent TalonFX configuration.private final booleanFactory default already occurred.(package private) com.ctre.phoenix.motorcontrol.can.WPI_TalonFXTalonFX motor controller.private doubleNominal voltage default to use with feedforward.private doubleThe position conversion factor to convert raw sensor units to Meters Per 100ms, or Ticks to Degrees.Fields inherited from class swervelib.motors.SwerveMotor
isDriveMotor, maximumRetries -
Constructor Summary
ConstructorsConstructorDescriptionTalonFXSwerve(int id, boolean isDriveMotor) Construct the TalonFX swerve motor given the ID.TalonFXSwerve(int id, String canbus, boolean isDriveMotor) Construct the TalonFX swerve motor given the ID and CANBus.TalonFXSwerve(com.ctre.phoenix.motorcontrol.can.WPI_TalonFX motor, boolean isDriveMotor) Constructor for TalonFX swerve motor. -
Method Summary
Modifier and TypeMethodDescriptionvoidSave the configurations from flash to EEPROM.voidClear the sticky faults on the motor controller.voidconfigureCANStatusFrames(int CANStatus1) Set the CAN status frames.voidconfigureCANStatusFrames(int CANStatus1, int CANStatus2, int CANStatus3, int CANStatus4, int CANStatus8, int CANStatus10, int CANStatus12, int CANStatus13, int CANStatus14, int CANStatus21, int CANStatusCurrent) Set the CAN status frames.voidconfigureIntegratedEncoder(double positionConversionFactor) Configure the integrated encoder for the swerve module.voidconfigurePIDF(PIDFConfig config) Configure the PIDF values for the closed loop controller.voidconfigurePIDWrapping(double minInput, double maxInput) Configure the PID wrapping for the position closed loop controller.doubleconvertToNativeSensorUnits(double setpoint, double position) Convert the setpoint into native sensor units.voidConfigure the factory defaults.getMotor()Get the motor object from the module.doubleGet the position of the integrated encoder.doubleGet the velocity of the integrated encoder.booleanQueries whether the absolute encoder is directly attached to the motor controller.voidset(double percentOutput) Set the percentage output.setAbsoluteEncoder(SwerveAbsoluteEncoder encoder) Set the absolute encoder to be a compatible absolute encoder.voidsetCurrentLimit(int currentLimit) Set the current limit for the swerve drive motor, remember this may cause jumping if used in conjunction with voltage compensation.voidsetInverted(boolean inverted) Set the motor to be inverted.voidsetLoopRampRate(double rampRate) Set the maximum rate the open/closed loop output can change by.voidsetMotorBrake(boolean isBrakeMode) Set the idle mode.voidsetPosition(double position) Set the integrated encoder position.voidsetReference(double setpoint, double feedforward) Set the closed loop PID controller reference point.voidsetReference(double setpoint, double feedforward, double position) Set the closed loop PID controller reference point.voidsetVoltageCompensation(double nominalVoltage) Set the voltage compensation for the swerve module motor.
-
Field Details
-
factoryDefaultOccurred
private final boolean factoryDefaultOccurredFactory default already occurred.- See Also:
-
configuration
private final com.ctre.phoenix.motorcontrol.can.TalonFXConfiguration configurationCurrent TalonFX configuration. -
absoluteEncoder
private final boolean absoluteEncoderWhether the absolute encoder is integrated.- See Also:
-
motor
com.ctre.phoenix.motorcontrol.can.WPI_TalonFX motorTalonFX motor controller. -
positionConversionFactor
private double positionConversionFactorThe position conversion factor to convert raw sensor units to Meters Per 100ms, or Ticks to Degrees. -
configChanged
private boolean configChangedIf the TalonFX configuration has changed. -
nominalVoltage
private double nominalVoltageNominal voltage default to use with feedforward.
-
-
Constructor Details
-
TalonFXSwerve
public TalonFXSwerve(com.ctre.phoenix.motorcontrol.can.WPI_TalonFX motor, boolean isDriveMotor) Constructor for TalonFX swerve motor.- Parameters:
motor- Motor to use.isDriveMotor- Whether this motor is a drive motor.
-
TalonFXSwerve
Construct the TalonFX swerve motor given the ID and CANBus.- Parameters:
id- ID of the TalonFX on the CANBus.canbus- CANBus on which the TalonFX is on.isDriveMotor- Whether the motor is a drive or steering motor.
-
TalonFXSwerve
public TalonFXSwerve(int id, boolean isDriveMotor) Construct the TalonFX swerve motor given the ID.- Parameters:
id- ID of the TalonFX on the canbus.isDriveMotor- Whether the motor is a drive or steering motor.
-
-
Method Details
-
factoryDefaults
public void factoryDefaults()Configure the factory defaults.- Specified by:
factoryDefaultsin classSwerveMotor
-
clearStickyFaults
public void clearStickyFaults()Clear the sticky faults on the motor controller.- Specified by:
clearStickyFaultsin classSwerveMotor
-
setAbsoluteEncoder
Set the absolute encoder to be a compatible absolute encoder.- Specified by:
setAbsoluteEncoderin classSwerveMotor- Parameters:
encoder- The encoder to use.- Returns:
- The
SwerveMotorfor single line configuration.
-
configureIntegratedEncoder
public void configureIntegratedEncoder(double positionConversionFactor) Configure the integrated encoder for the swerve module. Sets the conversion factors for position and velocity.- Specified by:
configureIntegratedEncoderin classSwerveMotor- Parameters:
positionConversionFactor- The conversion factor to apply for position.
Degrees:
360 / (angleGearRatio * encoderTicksPerRotation)
Meters:
(Math.PI * wheelDiameter) / (driveGearRatio * encoderTicksPerRotation)
-
configureCANStatusFrames
public void configureCANStatusFrames(int CANStatus1) Set the CAN status frames.- Parameters:
CANStatus1- Applied Motor Output, Fault Information, Limit Switch Information
-
configureCANStatusFrames
public void configureCANStatusFrames(int CANStatus1, int CANStatus2, int CANStatus3, int CANStatus4, int CANStatus8, int CANStatus10, int CANStatus12, int CANStatus13, int CANStatus14, int CANStatus21, int CANStatusCurrent) Set the CAN status frames.- Parameters:
CANStatus1- Applied Motor Output, Fault Information, Limit Switch InformationCANStatus2- Selected Sensor Position (PID 0), Selected Sensor Velocity (PID 0), Brushed Supply Current Measurement, Sticky Fault InformationCANStatus3- Quadrature InformationCANStatus4- Analog Input, Supply Battery Voltage, Controller TemperatureCANStatus8- Pulse Width InformationCANStatus10- Motion Profiling/Motion Magic InformationCANStatus12- Selected Sensor Position (Aux PID 1), Selected Sensor Velocity (Aux PID 1)CANStatus13- PID0 (Primary PID) InformationCANStatus14- PID1 (Auxiliary PID) InformationCANStatus21- Integrated Sensor Position (Talon FX), Integrated Sensor Velocity (Talon FX)CANStatusCurrent- Brushless Supply Current Measurement, Brushless Stator Current Measurement
-
configurePIDF
Configure the PIDF values for the closed loop controller. 0 is disabled or off.- Specified by:
configurePIDFin classSwerveMotor- Parameters:
config- Configuration class holding the PIDF values.
-
configurePIDWrapping
public void configurePIDWrapping(double minInput, double maxInput) Configure the PID wrapping for the position closed loop controller.- Specified by:
configurePIDWrappingin classSwerveMotor- Parameters:
minInput- Minimum PID input.maxInput- Maximum PID input.
-
setMotorBrake
public void setMotorBrake(boolean isBrakeMode) Set the idle mode.- Specified by:
setMotorBrakein classSwerveMotor- Parameters:
isBrakeMode- Set the brake mode.
-
setInverted
public void setInverted(boolean inverted) Set the motor to be inverted.- Specified by:
setInvertedin classSwerveMotor- Parameters:
inverted- State of inversion.
-
burnFlash
public void burnFlash()Save the configurations from flash to EEPROM.- Specified by:
burnFlashin classSwerveMotor
-
set
public void set(double percentOutput) Set the percentage output.- Specified by:
setin classSwerveMotor- Parameters:
percentOutput- percent out for the motor controller.
-
convertToNativeSensorUnits
public double convertToNativeSensorUnits(double setpoint, double position) Convert the setpoint into native sensor units.- Parameters:
setpoint- Setpoint to mutate. In meters per second or degrees.position- Position in degrees, only used on angle motors.- Returns:
- Setpoint as native sensor units. Encoder ticks per 100ms, or Encoder tick.
-
setReference
public void setReference(double setpoint, double feedforward) Set the closed loop PID controller reference point.- Specified by:
setReferencein classSwerveMotor- Parameters:
setpoint- Setpoint in MPS or Angle in degrees.feedforward- Feedforward in volt-meter-per-second or kV.
-
setReference
public void setReference(double setpoint, double feedforward, double position) Set the closed loop PID controller reference point.- Specified by:
setReferencein classSwerveMotor- Parameters:
setpoint- Setpoint in meters per second or angle in degrees.feedforward- Feedforward in volt-meter-per-second or kV.position- Only used on the angle motor, the position of the motor in degrees.
-
getVelocity
public double getVelocity()Get the velocity of the integrated encoder.- Specified by:
getVelocityin classSwerveMotor- Returns:
- velocity in Meters Per Second, or Degrees per Second.
-
getPosition
public double getPosition()Get the position of the integrated encoder.- Specified by:
getPositionin classSwerveMotor- Returns:
- Position in Meters or Degrees.
-
setPosition
public void setPosition(double position) Set the integrated encoder position.- Specified by:
setPositionin classSwerveMotor- Parameters:
position- Integrated encoder position. Should be angle in degrees or meters.
-
setVoltageCompensation
public void setVoltageCompensation(double nominalVoltage) Set the voltage compensation for the swerve module motor.- Specified by:
setVoltageCompensationin classSwerveMotor- Parameters:
nominalVoltage- Nominal voltage for operation to output to.
-
setCurrentLimit
public void setCurrentLimit(int currentLimit) Set the current limit for the swerve drive motor, remember this may cause jumping if used in conjunction with voltage compensation. This is useful to protect the motor from current spikes.- Specified by:
setCurrentLimitin classSwerveMotor- Parameters:
currentLimit- Current limit in AMPS at free speed.
-
setLoopRampRate
public void setLoopRampRate(double rampRate) Set the maximum rate the open/closed loop output can change by.- Specified by:
setLoopRampRatein classSwerveMotor- Parameters:
rampRate- Time in seconds to go from 0 to full throttle.
-
getMotor
Get the motor object from the module.- Specified by:
getMotorin classSwerveMotor- Returns:
- Motor object.
-
isAttachedAbsoluteEncoder
public boolean isAttachedAbsoluteEncoder()Queries whether the absolute encoder is directly attached to the motor controller.- Specified by:
isAttachedAbsoluteEncoderin classSwerveMotor- Returns:
- connected absolute encoder state.
-