Class SparkMaxPIDController
- java.lang.Object
-
- com.revrobotics.SparkMaxPIDController
-
- All Implemented Interfaces:
CANPIDController
public class SparkMaxPIDController extends java.lang.Object implements CANPIDController
Get an instance of this class by usingCANSparkMax.getPIDController()
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SparkMaxPIDController.AccelStrategy
static class
SparkMaxPIDController.ArbFFUnits
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description double
getD()
Get the Derivative Gain constant of the PIDF controller on the SPARK MAX.double
getD(int slotID)
Get the Derivative Gain constant of the PIDF controller on the SPARK MAX.double
getDFilter(int slotID)
Get the Derivative Filter constant of the PIDF controller on the SPARK MAX.double
getFF()
Get the Feed-forward Gain constant of the PIDF controller on the SPARK MAX.double
getFF(int slotID)
Get the Feed-forward Gain constant of the PIDF controller on the SPARK MAX.double
getI()
Get the Integral Gain constant of the PIDF controller on the SPARK MAX.double
getI(int slotID)
Get the Integral Gain constant of the PIDF controller on the SPARK MAX.double
getIAccum()
Get the I accumulator of the PID controller.double
getIMaxAccum(int slotID)
Get the maximum I accumulator of the PID controller.double
getIZone()
Get the IZone constant of the PIDF controller on the SPARK MAX.double
getIZone(int slotID)
Get the IZone constant of the PIDF controller on the SPARK MAX.double
getOutputMax()
Get the max output of the PIDF controller on the SPARK MAX.double
getOutputMax(int slotID)
Get the max output of the PIDF controller on the SPARK MAX.double
getOutputMin()
Get the min output of the PIDF controller on the SPARK MAX.double
getOutputMin(int slotID)
Get the min output of the PIDF controller on the SPARK MAX.double
getP()
Get the Proportional Gain constant of the PIDF controller on the SPARK MAX.double
getP(int slotID)
Get the Proportional Gain constant of the PIDF controller on the SPARK MAX.boolean
getPositionPIDWrappingEnabled()
Get whether or not PID Wrapping for position closed loop control is enableddouble
getPositionPIDWrappingMaxInput()
Get the maximum input value for PID Wrapping with position closed loop controldouble
getPositionPIDWrappingMinInput()
Get the minimum input value for PID Wrapping with position closed loop controlSparkMaxPIDController.AccelStrategy
getSmartMotionAccelStrategy(int slotID)
Get the acceleration strategy used to control acceleration on the motor.double
getSmartMotionAllowedClosedLoopError(int slotID)
Get the allowed closed loop error of SmartMotion mode.double
getSmartMotionMaxAccel(int slotID)
Get the maximum acceleration of the SmartMotion mode.double
getSmartMotionMaxVelocity(int slotID)
Get the maximum velocity of the SmartMotion mode.double
getSmartMotionMinOutputVelocity(int slotID)
Get the mimimum velocity of the SmartMotion mode.REVLibError
setD(double gain)
Set the Derivative Gain constant of the PIDF controller on the SPARK MAX.REVLibError
setD(double gain, int slotID)
Set the Derivative Gain constant of the PIDF controller on the SPARK MAX.REVLibError
setDFilter(double gain)
Set the Derivative Filter constant of the PIDF controller on the SPARK MAX.REVLibError
setDFilter(double gain, int slotID)
Set the Derivative Filter constant of the PIDF controller on the SPARK MAX.REVLibError
setFeedbackDevice(CANSensor sensor)
Deprecated, for removal: This API element is subject to removal in a future version.UsesetFeedbackDevice(MotorFeedbackSensor)
insteadREVLibError
setFeedbackDevice(MotorFeedbackSensor sensor)
Set the controller's feedback deviceREVLibError
setFF(double gain)
Set the Feed-forward Gain constant of the PIDF controller on the SPARK MAX.REVLibError
setFF(double gain, int slotID)
Set the Feed-forward Gain constant of the PIDF controller on the SPARK MAX.REVLibError
setI(double gain)
Set the Integral Gain constant of the PIDF controller on the SPARK MAX.REVLibError
setI(double gain, int slotID)
Set the Integral Gain constant of the PIDF controller on the SPARK MAX.REVLibError
setIAccum(double iAccum)
Set the I accumulator of the PID controller.REVLibError
setIMaxAccum(double iMaxAccum, int slotID)
Configure the maximum I accumulator of the PID controller.REVLibError
setIZone(double IZone)
Set the IZone range of the PIDF controller on the SPARK MAX.REVLibError
setIZone(double IZone, int slotID)
Set the IZone range of the PIDF controller on the SPARK MAX.REVLibError
setOutputRange(double min, double max)
Set the min amd max output for the closed loop mode.REVLibError
setOutputRange(double min, double max, int slotID)
Set the min amd max output for the closed loop mode.REVLibError
setP(double gain)
Set the Proportional Gain constant of the PIDF controller on the SPARK MAX.REVLibError
setP(double gain, int slotID)
Set the Proportional Gain constant of the PIDF controller on the SPARK MAX.REVLibError
setPositionPIDWrappingEnabled(boolean enable)
Enable or disable PID Wrapping for position closed loop controlREVLibError
setPositionPIDWrappingMaxInput(double max)
Set the maximum input value for PID Wrapping with position closed loop controlREVLibError
setPositionPIDWrappingMinInput(double min)
Set the minimum input value for PID Wrapping with position closed loop controlREVLibError
setReference(double value, CANSparkMax.ControlType ctrl)
Set the controller reference value based on the selected control mode.REVLibError
setReference(double value, CANSparkMax.ControlType ctrl, int pidSlot)
Set the controller reference value based on the selected control mode.REVLibError
setReference(double value, CANSparkMax.ControlType ctrl, int pidSlot, double arbFeedforward)
Set the controller reference value based on the selected control mode.REVLibError
setReference(double value, CANSparkMax.ControlType ctrl, int pidSlot, double arbFeedforward, SparkMaxPIDController.ArbFFUnits arbFFUnits)
Set the controller reference value based on the selected control mode.REVLibError
setReference(double value, ControlType ctrl)
Deprecated, for removal: This API element is subject to removal in a future version.UsesetReference(double, CANSparkMax.ControlType)
instead.REVLibError
setReference(double value, ControlType ctrl, int pidSlot)
Deprecated, for removal: This API element is subject to removal in a future version.UsesetReference(double, CANSparkMax.ControlType, int)
instead.REVLibError
setReference(double value, ControlType ctrl, int pidSlot, double arbFeedforward)
Deprecated, for removal: This API element is subject to removal in a future version.REVLibError
setReference(double value, ControlType ctrl, int pidSlot, double arbFeedforward, CANPIDController.ArbFFUnits arbFFUnits)
Deprecated, for removal: This API element is subject to removal in a future version.REVLibError
setSmartMotionAccelStrategy(CANPIDController.AccelStrategy accelStrategy, int slotID)
Deprecated, for removal: This API element is subject to removal in a future version.UsesetSmartMotionAccelStrategy(AccelStrategy, int)
instead.REVLibError
setSmartMotionAccelStrategy(SparkMaxPIDController.AccelStrategy accelStrategy, int slotID)
NOTE: As of the 2022 FRC season, the firmware only supports the trapezoidal motion profiling acceleration strategy.REVLibError
setSmartMotionAllowedClosedLoopError(double allowedErr, int slotID)
Configure the allowed closed loop error of SmartMotion mode.REVLibError
setSmartMotionMaxAccel(double maxAccel, int slotID)
Configure the maximum acceleration of the SmartMotion mode.REVLibError
setSmartMotionMaxVelocity(double maxVel, int slotID)
Configure the maximum velocity of the SmartMotion mode.REVLibError
setSmartMotionMinOutputVelocity(double minVel, int slotID)
Configure the mimimum velocity of the SmartMotion mode.
-
-
-
Method Detail
-
setReference
public REVLibError setReference(double value, CANSparkMax.ControlType ctrl)
Set the controller reference value based on the selected control mode.- Specified by:
setReference
in interfaceCANPIDController
- Parameters:
value
- The value to set depending on the control mode. For basic duty cycle control this should be a value between -1 and 1 Otherwise: Voltage Control: Voltage (volts) Velocity Control: Velocity (RPM) Position Control: Position (Rotations) Current Control: Current (Amps). Native units can be changed using the setPositionConversionFactor() or setVelocityConversionFactor() methods of the CANEncoder classctrl
- the control type- Returns:
REVLibError.kOk
if successful
-
setReference
@Deprecated(forRemoval=true) public REVLibError setReference(double value, ControlType ctrl)
Deprecated, for removal: This API element is subject to removal in a future version.UsesetReference(double, CANSparkMax.ControlType)
instead.Set the controller reference value based on the selected control mode.- Specified by:
setReference
in interfaceCANPIDController
- Parameters:
value
- The value to set depending on the control mode. For basic duty cycle control this should be a value between -1 and 1 Otherwise: Voltage Control: Voltage (volts) Velocity Control: Velocity (RPM) Position Control: Position (Rotations) Current Control: Current (Amps). Native units can be changed using the setPositionConversionFactor() or setVelocityConversionFactor() methods of the CANEncoder classctrl
- the control type- Returns:
REVLibError.kOk
if successful
-
setReference
public REVLibError setReference(double value, CANSparkMax.ControlType ctrl, int pidSlot)
Set the controller reference value based on the selected control mode. This will override the pre-programmed control mode but not change what is programmed to the controller.- Specified by:
setReference
in interfaceCANPIDController
- Parameters:
value
- The value to set depending on the control mode. For basic duty cycle control this should be a value between -1 and 1 Otherwise: Voltage Control: Voltage (volts) Velocity Control: Velocity (RPM) Position Control: Position (Rotations) Current Control: Current (Amps). Native units can be changed using the setPositionConversionFactor() or setVelocityConversionFactor() methods of the CANEncoder classctrl
- Is the control type to override withpidSlot
- for this command- Returns:
REVLibError.kOk
if successful
-
setReference
@Deprecated(forRemoval=true) public REVLibError setReference(double value, ControlType ctrl, int pidSlot)
Deprecated, for removal: This API element is subject to removal in a future version.UsesetReference(double, CANSparkMax.ControlType, int)
instead.Set the controller reference value based on the selected control mode. This will override the pre-programmed control mode but not change what is programmed to the controller.- Specified by:
setReference
in interfaceCANPIDController
- Parameters:
value
- The value to set depending on the control mode. For basic duty cycle control this should be a value between -1 and 1 Otherwise: Voltage Control: Voltage (volts) Velocity Control: Velocity (RPM) Position Control: Position (Rotations) Current Control: Current (Amps). Native units can be changed using the setPositionConversionFactor() or setVelocityConversionFactor() methods of the CANEncoder classctrl
- Is the control type to override withpidSlot
- for this command- Returns:
REVLibError.kOk
if successful
-
setReference
public REVLibError setReference(double value, CANSparkMax.ControlType ctrl, int pidSlot, double arbFeedforward)
Set the controller reference value based on the selected control mode. This will override the pre-programmed control mode but not change what is programmed to the controller.- Specified by:
setReference
in interfaceCANPIDController
- Parameters:
value
- The value to set depending on the control mode. For basic duty cycle control this should be a value between -1 and 1 Otherwise: Voltage Control: Voltage (volts) Velocity Control: Velocity (RPM) Position Control: Position (Rotations) Current Control: Current (Amps). Native units can be changed using the setPositionConversionFactor() or setVelocityConversionFactor() methods of the CANEncoder classctrl
- Is the control type to override withpidSlot
- for this commandarbFeedforward
- A value from which is represented in voltage applied to the motor after the result of the specified control mode. The units for the parameter is Volts. This value is set after the control mode, but before any current limits or ramp rates.- Returns:
REVLibError.kOk
if successful
-
setReference
@Deprecated(forRemoval=true) public REVLibError setReference(double value, ControlType ctrl, int pidSlot, double arbFeedforward)
Deprecated, for removal: This API element is subject to removal in a future version.Set the controller reference value based on the selected control mode. This will override the pre-programmed control mode but not change what is programmed to the controller.- Specified by:
setReference
in interfaceCANPIDController
- Parameters:
value
- The value to set depending on the control mode. For basic duty cycle control this should be a value between -1 and 1 Otherwise: Voltage Control: Voltage (volts) Velocity Control: Velocity (RPM) Position Control: Position (Rotations) Current Control: Current (Amps). Native units can be changed using the setPositionConversionFactor() or setVelocityConversionFactor() methods of the CANEncoder classctrl
- Is the control type to override withpidSlot
- for this commandarbFeedforward
- A value from which is represented in voltage applied to the motor after the result of the specified control mode. The units for the parameter is Volts. This value is set after the control mode, but before any current limits or ramp rates.- Returns:
REVLibError.kOk
if successful
-
setReference
public REVLibError setReference(double value, CANSparkMax.ControlType ctrl, int pidSlot, double arbFeedforward, SparkMaxPIDController.ArbFFUnits arbFFUnits)
Set the controller reference value based on the selected control mode. This will override the pre-programmed control mode but not change what is programmed to the controller.- Specified by:
setReference
in interfaceCANPIDController
- Parameters:
value
- The value to set depending on the control mode. For basic duty cycle control this should be a value between -1 and 1 Otherwise: Voltage Control: Voltage (volts) Velocity Control: Velocity (RPM) Position Control: Position (Rotations) Current Control: Current (Amps). Native units can be changed using the setPositionConversionFactor() or setVelocityConversionFactor() methods of the CANEncoder classctrl
- Is the control type to override withpidSlot
- for this commandarbFeedforward
- A value from which is represented in voltage applied to the motor after the result of the specified control mode. The units for the parameter is Volts. This value is set after the control mode, but before any current limits or ramp rates.arbFFUnits
- The units the arbitrary feed forward term is in- Returns:
REVLibError.kOk
if successful
-
setReference
@Deprecated(forRemoval=true) public REVLibError setReference(double value, ControlType ctrl, int pidSlot, double arbFeedforward, CANPIDController.ArbFFUnits arbFFUnits)
Deprecated, for removal: This API element is subject to removal in a future version.Set the controller reference value based on the selected control mode. This will override the pre-programmed control mode but not change what is programmed to the controller.- Specified by:
setReference
in interfaceCANPIDController
- Parameters:
value
- The value to set depending on the control mode. For basic duty cycle control this should be a value between -1 and 1 Otherwise: Voltage Control: Voltage (volts) Velocity Control: Velocity (RPM) Position Control: Position (Rotations) Current Control: Current (Amps). Native units can be changed using the setPositionConversionFactor() or setVelocityConversionFactor() methods of the CANEncoder classctrl
- Is the control type to override withpidSlot
- for this commandarbFeedforward
- A value from which is represented in voltage applied to the motor after the result of the specified control mode. The units for the parameter is Volts. This value is set after the control mode, but before any current limits or ramp rates.arbFFUnits
- The units the arbitrary feed forward term is in- Returns:
REVLibError.kOk
if successful
-
setP
public REVLibError setP(double gain)
Set the Proportional Gain constant of the PIDF controller on the SPARK MAX. This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is use to SPARK MAX GUI to tune and save parameters.- Specified by:
setP
in interfaceCANPIDController
- Parameters:
gain
- The proportional gain value, must be positive- Returns:
REVLibError.kOk
if successful
-
setP
public REVLibError setP(double gain, int slotID)
Set the Proportional Gain constant of the PIDF controller on the SPARK MAX. This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is use to SPARK MAX GUI to tune and save parameters.- Specified by:
setP
in interfaceCANPIDController
- Parameters:
gain
- The proportional gain value, must be positiveslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setI
public REVLibError setI(double gain)
Set the Integral Gain constant of the PIDF controller on the SPARK MAX. This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is use to SPARK MAX GUI to tune and save parameters.- Specified by:
setI
in interfaceCANPIDController
- Parameters:
gain
- The integral gain value, must be positive- Returns:
REVLibError.kOk
if successful
-
setI
public REVLibError setI(double gain, int slotID)
Set the Integral Gain constant of the PIDF controller on the SPARK MAX. This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is use to SPARK MAX GUI to tune and save parameters.- Specified by:
setI
in interfaceCANPIDController
- Parameters:
gain
- The integral gain value, must be positiveslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setD
public REVLibError setD(double gain)
Set the Derivative Gain constant of the PIDF controller on the SPARK MAX. This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is use to SPARK MAX GUI to tune and save parameters.- Specified by:
setD
in interfaceCANPIDController
- Parameters:
gain
- The derivative gain value, must be positive- Returns:
REVLibError.kOk
if successful
-
setD
public REVLibError setD(double gain, int slotID)
Set the Derivative Gain constant of the PIDF controller on the SPARK MAX. This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is use to SPARK MAX GUI to tune and save parameters.- Specified by:
setD
in interfaceCANPIDController
- Parameters:
gain
- The derivative gain value, must be positiveslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setDFilter
public REVLibError setDFilter(double gain)
Set the Derivative Filter constant of the PIDF controller on the SPARK MAX. This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called.- Specified by:
setDFilter
in interfaceCANPIDController
- Parameters:
gain
- The derivative filter value, must be a positive number between 0 and 1- Returns:
REVLibError.kOk
if successful
-
setDFilter
public REVLibError setDFilter(double gain, int slotID)
Set the Derivative Filter constant of the PIDF controller on the SPARK MAX. This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called.- Specified by:
setDFilter
in interfaceCANPIDController
- Parameters:
gain
- The derivative filter value, must be a positive number between 0 and 1slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setFF
public REVLibError setFF(double gain)
Set the Feed-forward Gain constant of the PIDF controller on the SPARK MAX. This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is use to SPARK MAX GUI to tune and save parameters.- Specified by:
setFF
in interfaceCANPIDController
- Parameters:
gain
- The feed-forward gain value- Returns:
REVLibError.kOk
if successful
-
setFF
public REVLibError setFF(double gain, int slotID)
Set the Feed-forward Gain constant of the PIDF controller on the SPARK MAX. This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is use to SPARK MAX GUI to tune and save parameters.- Specified by:
setFF
in interfaceCANPIDController
- Parameters:
gain
- The feed-forward gain valueslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setIZone
public REVLibError setIZone(double IZone)
Set the IZone range of the PIDF controller on the SPARK MAX. This value specifies the range the |error| must be within for the integral constant to take effect.This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is to use the SPARK MAX GUI to tune and save parameters.
- Specified by:
setIZone
in interfaceCANPIDController
- Parameters:
IZone
- The IZone value, must be positive. Set to 0 to disable- Returns:
REVLibError.kOk
if successful
-
setIZone
public REVLibError setIZone(double IZone, int slotID)
Set the IZone range of the PIDF controller on the SPARK MAX. This value specifies the range the |error| must be within for the integral constant to take effect.This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is to use the SPARK MAX GUI to tune and save parameters.
- Specified by:
setIZone
in interfaceCANPIDController
- Parameters:
IZone
- The IZone value, must be positive. Set to 0 to disableslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setOutputRange
public REVLibError setOutputRange(double min, double max)
Set the min amd max output for the closed loop mode.This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is to use the SPARK MAX GUI to tune and save parameters.
- Specified by:
setOutputRange
in interfaceCANPIDController
- Parameters:
min
- Reverse power minimum to allow the controller to outputmax
- Forward power maximum to allow the controller to output- Returns:
REVLibError.kOk
if successful
-
setOutputRange
public REVLibError setOutputRange(double min, double max, int slotID)
Set the min amd max output for the closed loop mode.This uses the Set Parameter API and should be used infrequently. The parameter does not presist unless burnFlash() is called. The recommended method to configure this parameter is to use the SPARK MAX GUI to tune and save parameters.
- Specified by:
setOutputRange
in interfaceCANPIDController
- Parameters:
min
- Reverse power minimum to allow the controller to outputmax
- Forward power maximum to allow the controller to outputslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
getP
public double getP()
Get the Proportional Gain constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getP
in interfaceCANPIDController
- Returns:
- double P Gain value
-
getP
public double getP(int slotID)
Get the Proportional Gain constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getP
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- double P Gain value
-
getI
public double getI()
Get the Integral Gain constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getI
in interfaceCANPIDController
- Returns:
- double I Gain value
-
getI
public double getI(int slotID)
Get the Integral Gain constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getI
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- double I Gain value
-
getD
public double getD()
Get the Derivative Gain constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getD
in interfaceCANPIDController
- Returns:
- double D Gain value
-
getD
public double getD(int slotID)
Get the Derivative Gain constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getD
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- double D Gain value
-
getDFilter
public double getDFilter(int slotID)
Get the Derivative Filter constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getDFilter
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- double D Filter value
-
getFF
public double getFF()
Get the Feed-forward Gain constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getFF
in interfaceCANPIDController
- Returns:
- double F Gain value
-
getFF
public double getFF(int slotID)
Get the Feed-forward Gain constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getFF
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- double F Gain value
-
getIZone
public double getIZone()
Get the IZone constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getIZone
in interfaceCANPIDController
- Returns:
- double IZone value
-
getIZone
public double getIZone(int slotID)
Get the IZone constant of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getIZone
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- double IZone value
-
getOutputMin
public double getOutputMin()
Get the min output of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getOutputMin
in interfaceCANPIDController
- Returns:
- double min value
-
getOutputMin
public double getOutputMin(int slotID)
Get the min output of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getOutputMin
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- double min value
-
getOutputMax
public double getOutputMax()
Get the max output of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getOutputMax
in interfaceCANPIDController
- Returns:
- double max value
-
getOutputMax
public double getOutputMax(int slotID)
Get the max output of the PIDF controller on the SPARK MAX.This uses the Get Parameter API and should be used infrequently. This function uses a non-blocking call and will return a cached value if the parameter is not returned by the timeout. The timeout can be changed by calling SetCANTimeout(int milliseconds)
- Specified by:
getOutputMax
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- double max value
-
setSmartMotionMaxVelocity
public REVLibError setSmartMotionMaxVelocity(double maxVel, int slotID)
Configure the maximum velocity of the SmartMotion mode. This is the velocity that is reached in the middle of the profile and is what the motor should spend most of its time at- Specified by:
setSmartMotionMaxVelocity
in interfaceCANPIDController
- Parameters:
maxVel
- The maxmimum cruise velocity for the motion profile in RPMslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setSmartMotionMaxAccel
public REVLibError setSmartMotionMaxAccel(double maxAccel, int slotID)
Configure the maximum acceleration of the SmartMotion mode. This is the accleration that the motor velocity will increase at until the max velocity is reached- Specified by:
setSmartMotionMaxAccel
in interfaceCANPIDController
- Parameters:
maxAccel
- The maxmimum acceleration for the motion profile in RPM per secondslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setSmartMotionMinOutputVelocity
public REVLibError setSmartMotionMinOutputVelocity(double minVel, int slotID)
Configure the mimimum velocity of the SmartMotion mode. Any requested velocities below this value will be set to 0.- Specified by:
setSmartMotionMinOutputVelocity
in interfaceCANPIDController
- Parameters:
minVel
- The minimum velocity for the motion profile in RPMslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setSmartMotionAllowedClosedLoopError
public REVLibError setSmartMotionAllowedClosedLoopError(double allowedErr, int slotID)
Configure the allowed closed loop error of SmartMotion mode. This value is how much deviation from your setpoint is tolerated and is useful in preventing oscillation around your setpoint.- Specified by:
setSmartMotionAllowedClosedLoopError
in interfaceCANPIDController
- Parameters:
allowedErr
- The allowed deviation for your setpoint vs actual position in rotationsslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setSmartMotionAccelStrategy
public REVLibError setSmartMotionAccelStrategy(SparkMaxPIDController.AccelStrategy accelStrategy, int slotID)
NOTE: As of the 2022 FRC season, the firmware only supports the trapezoidal motion profiling acceleration strategy.Configure the acceleration strategy used to control acceleration on the motor.
- Parameters:
accelStrategy
- The acceleration strategy to use for the automatically generated motion profileslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
setSmartMotionAccelStrategy
@Deprecated(forRemoval=true) public REVLibError setSmartMotionAccelStrategy(CANPIDController.AccelStrategy accelStrategy, int slotID)
Deprecated, for removal: This API element is subject to removal in a future version.UsesetSmartMotionAccelStrategy(AccelStrategy, int)
instead.NOTE: As of the 2022 FRC season, the firmware only supports the trapezoidal motion profiling acceleration strategy.Configure the acceleration strategy used to control acceleration on the motor. The current strategy is trapezoidal motion profiling.
- Specified by:
setSmartMotionAccelStrategy
in interfaceCANPIDController
- Parameters:
accelStrategy
- The acceleration strategy to use for the automatically generated motion profileslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
getSmartMotionMaxVelocity
public double getSmartMotionMaxVelocity(int slotID)
Get the maximum velocity of the SmartMotion mode. This is the velocity that is reached in the middle of the profile and is what the motor should spend most of its time at- Specified by:
getSmartMotionMaxVelocity
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- The maxmimum cruise velocity for the motion profile in RPM
-
getSmartMotionMaxAccel
public double getSmartMotionMaxAccel(int slotID)
Get the maximum acceleration of the SmartMotion mode. This is the accleration that the motor velocity will increase at until the max velocity is reached- Specified by:
getSmartMotionMaxAccel
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- The maxmimum acceleration for the motion profile in RPM per second
-
getSmartMotionMinOutputVelocity
public double getSmartMotionMinOutputVelocity(int slotID)
Get the mimimum velocity of the SmartMotion mode. Any requested velocities below this value will be set to 0.- Specified by:
getSmartMotionMinOutputVelocity
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- The minimum velocity for the motion profile in RPM
-
getSmartMotionAllowedClosedLoopError
public double getSmartMotionAllowedClosedLoopError(int slotID)
Get the allowed closed loop error of SmartMotion mode. This value is how much deviation from your setpoint is tolerated and is useful in preventing oscillation around your setpoint.- Specified by:
getSmartMotionAllowedClosedLoopError
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- The allowed deviation for your setpoint vs actual position in rotations
-
getSmartMotionAccelStrategy
public SparkMaxPIDController.AccelStrategy getSmartMotionAccelStrategy(int slotID)
Get the acceleration strategy used to control acceleration on the motor. As of the 2022 FRC season, the strategy is always trapezoidal motion profiling, regardless of what the device may report.- Specified by:
getSmartMotionAccelStrategy
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- The acceleration strategy to use for the automatically generated motion profile.
-
setIMaxAccum
public REVLibError setIMaxAccum(double iMaxAccum, int slotID)
Configure the maximum I accumulator of the PID controller. This value is used to constrain the I accumulator to help manage integral wind-up- Specified by:
setIMaxAccum
in interfaceCANPIDController
- Parameters:
iMaxAccum
- The max value to contrain the I accumulator toslotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
REVLibError.kOk
if successful
-
getIMaxAccum
public double getIMaxAccum(int slotID)
Get the maximum I accumulator of the PID controller. This value is used to constrain the I accumulator to help manage integral wind-up- Specified by:
getIMaxAccum
in interfaceCANPIDController
- Parameters:
slotID
- Is the gain schedule slot, the value is a number between 0 and 3. Each slot has its own set of gain values and can be changed in each control frame using SetReference().- Returns:
- The max value to contrain the I accumulator to
-
setIAccum
public REVLibError setIAccum(double iAccum)
Set the I accumulator of the PID controller. This is useful when wishing to force a reset on the I accumulator of the PID controller. You can also preset values to see how it will respond to certain I characteristicsTo use this function, the controller must be in a closed loop control mode by calling setReference()
- Specified by:
setIAccum
in interfaceCANPIDController
- Parameters:
iAccum
- The value to set the I accumulator to- Returns:
REVLibError.kOk
if successful
-
getIAccum
public double getIAccum()
Get the I accumulator of the PID controller. This is useful when wishing to see what the I accumulator value is to help with PID tuning- Specified by:
getIAccum
in interfaceCANPIDController
- Returns:
- The value of the I accumulator
-
setPositionPIDWrappingEnabled
public REVLibError setPositionPIDWrappingEnabled(boolean enable)
Enable or disable PID Wrapping for position closed loop control- Parameters:
enable
- Whether position PID wrapping should be enabled
-
setPositionPIDWrappingMinInput
public REVLibError setPositionPIDWrappingMinInput(double min)
Set the minimum input value for PID Wrapping with position closed loop control- Parameters:
min
- The value of min input for the position- Returns:
REVLibError.kOk
if successful
-
setPositionPIDWrappingMaxInput
public REVLibError setPositionPIDWrappingMaxInput(double max)
Set the maximum input value for PID Wrapping with position closed loop control- Parameters:
max
- The value of max input for the position- Returns:
REVLibError.kOk
if successful
-
getPositionPIDWrappingEnabled
public boolean getPositionPIDWrappingEnabled()
Get whether or not PID Wrapping for position closed loop control is enabled- Returns:
true
if PID Wrapping is enabled
-
getPositionPIDWrappingMinInput
public double getPositionPIDWrappingMinInput()
Get the minimum input value for PID Wrapping with position closed loop control- Returns:
- The minimum input value
-
getPositionPIDWrappingMaxInput
public double getPositionPIDWrappingMaxInput()
Get the maximum input value for PID Wrapping with position closed loop control- Returns:
- The maximum input value
-
setFeedbackDevice
public REVLibError setFeedbackDevice(MotorFeedbackSensor sensor)
Set the controller's feedback deviceThe default feedback device in brushless mode is assumed to be the integrated encoder and the default feedback device in brushed mode is assumed to be a quadrature encoder. This is used to changed to another feedback device for the controller, such as an analog sensor.
If there is a limited range on the feedback sensor that should be observed by the PIDController, it can be set by calling SetFeedbackSensorRange() on the sensor object.
- Specified by:
setFeedbackDevice
in interfaceCANPIDController
- Parameters:
sensor
- The sensor to use as a feedback device- Returns:
REVLibError.kOk
if successful
-
setFeedbackDevice
@Deprecated(forRemoval=true) public REVLibError setFeedbackDevice(CANSensor sensor)
Deprecated, for removal: This API element is subject to removal in a future version.UsesetFeedbackDevice(MotorFeedbackSensor)
instead- Specified by:
setFeedbackDevice
in interfaceCANPIDController
-
-