Package swervelib.motors
Class ThriftyNovaSwerve
java.lang.Object
swervelib.motors.SwerveMotor
swervelib.motors.ThriftyNovaSwerve
- All Implemented Interfaces:
AutoCloseable
An implementation of
ThriftyNova as a SwerveMotor.-
Field Summary
FieldsFields inherited from class swervelib.motors.SwerveMotor
isDriveMotor, maximumRetries -
Constructor Summary
ConstructorsConstructorDescriptionThriftyNovaSwerve(int id, boolean isDriveMotor, DCMotor motor) Initialize theSwerveMotoras aThriftyNovaconnected to a Brushless Motor.ThriftyNovaSwerve(com.thethriftybot.ThriftyNova motor, boolean isDriveMotor, DCMotor motorType) Initialize the swerve motor. -
Method Summary
Modifier and TypeMethodDescriptionvoidSave the configurations from flash to EEPROM.voidClear the sticky faults on the motor controller.voidclose()voidconfigureCANStatusFrames(double fault, double sensor, double quadSensor, double control, double current) 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.voidDisable PID Wrapping on the motor.voidSet factory defaults on the motor controller.doubleGet the voltage output of the motor controller.getMotor()Get the motor object from the module.doubleGet the position of the integrated encoder.Get theDCMotorof the motor class.doubleGet the velocity of the integrated encoder.doubleGet the voltage output of 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.voidsetVoltage(double voltage) Set the voltage of the motor.voidsetVoltageCompensation(double nominalVoltage) Set the voltage compensation for the swerve module motor.booleanQueries whether the absolute encoder is directly attached to the motor controller.
-
Field Details
-
pid
Closed-loop PID controller.
-
-
Constructor Details
-
ThriftyNovaSwerve
public ThriftyNovaSwerve(com.thethriftybot.ThriftyNova motor, boolean isDriveMotor, DCMotor motorType) Initialize the swerve motor.- Parameters:
motor- The SwerveMotor as a ThriftyNova object.isDriveMotor- Is the motor being initialized a drive motor?motorType-DCMotorcontrolled by theThriftyNova
-
ThriftyNovaSwerve
Initialize theSwerveMotoras aThriftyNovaconnected to a Brushless Motor.- Parameters:
id- CAN ID of the ThriftyNova.isDriveMotor- Is the motor being initialized a drive motor?motor-DCMotorcontrolled by theThriftyNova
-
-
Method Details
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein classSwerveMotor
-
factoryDefaults
public void factoryDefaults()Set factory defaults on the motor controller.- 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 easy instantiation.
-
configureIntegratedEncoder
public void configureIntegratedEncoder(double positionConversionFactor) Description copied from class:SwerveMotorConfigure 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.
-
configureCANStatusFrames
public void configureCANStatusFrames(double fault, double sensor, double quadSensor, double control, double current) Set the CAN status frames.- Parameters:
fault- Fault transmission ratesensor- Sensor transmission ratequadSensor- External quad encoder transmission ratecontrol- Control frame transmission ratecurrent- Current feedback transmission rate
-
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.
-
disablePIDWrapping
public void disablePIDWrapping()Disable PID Wrapping on the motor.- Specified by:
disablePIDWrappingin classSwerveMotor
-
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.
-
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.
-
getVoltage
public double getVoltage()Get the voltage output of the motor controller.- Specified by:
getVoltagein classSwerveMotor- Returns:
- Voltage output.
-
setVoltage
public void setVoltage(double voltage) Set the voltage of the motor.- Specified by:
setVoltagein classSwerveMotor- Parameters:
voltage- Voltage to set.
-
getAppliedOutput
public double getAppliedOutput()Get the voltage output of the motor controller.- Specified by:
getAppliedOutputin classSwerveMotor- Returns:
- Voltage output.
-
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) Description copied from class:SwerveMotorSet 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.
-
usingExternalFeedbackSensor
public boolean usingExternalFeedbackSensor()Queries whether the absolute encoder is directly attached to the motor controller.- Specified by:
usingExternalFeedbackSensorin classSwerveMotor- Returns:
- connected absolute encoder state.
-
getSimMotor
Description copied from class:SwerveMotorGet theDCMotorof the motor class.- Specified by:
getSimMotorin classSwerveMotor- Returns:
DCMotorof this type.
-