SparkClosedLoopController

class rev.SparkClosedLoopController

Bases: pybind11_object

class ArbFFUnits(value: SupportsInt | SupportsIndex)

Bases: pybind11_object

Units for arbitrary feed-forward

Members:

kVoltage

kPercentOut

kPercentOut = <ArbFFUnits.kPercentOut: 1>
kVoltage = <ArbFFUnits.kVoltage: 0>
SparkClosedLoopController.ArbFFUnits.name -> str
property value
getControlType() rev._rev.SparkLowLevel.ControlType

Get the selected control type used when SetReference() was called.

Returns:

The selected control type

getIAccum() float

Get the I accumulator of the closed loop controller. This is useful when wishing to see what the I accumulator value is to help with PID tuning

Returns:

The value of the I accumulator

getMAXMotionSetpointPosition() float

Get the MAXMotion internal setpoint position.

This will be 0 if the controller is not in a MAXMotion control mode.

Returns:

The MAXMotion internal setpoint position in rotations or units specified by the conversion factor.

getMAXMotionSetpointVelocity() float

Get the MAXMotion internal setpoint velocity.

This will be 0 if the controller is not in a MAXMotion control mode.

Returns:

The MAXMotion internal setpoint velocity in rotations per minute or units specified by the conversion factor.

getSelectedSlot() rev._rev.ClosedLoopSlot

Get the selected closed loop PID slot.

Returns:

The selected closed loop PID slot

getSetpoint() float

Get the internal setpoint of the closed loop controller.

Returns:

The internal setpoint

isAtSetpoint() bool

Determine if the setpoint has been reached.

Returns:

true if the setpoint is reached; false otherwise

setIAccum(iAccum: SupportsFloat | SupportsIndex) rev._rev.REVLibError

Set the I accumulator of the closed loop controller. This is useful when wishing to force a reset on the I accumulator of the Closed Loop Controller. You can also preset values to see how it will respond to certain I characteristics

To use this function, the controller must be in a closed loop control mode by calling setReference()

Parameters:

iAccum – The value to set the I accumulator to

Returns:

REVLibError::kOk if successful

setReference(setpoint: SupportsFloat | SupportsIndex, ctrl: rev._rev.SparkLowLevel.ControlType, slot: rev._rev.ClosedLoopSlot = <ClosedLoopSlot.kSlot0: 0>, arbFeedforward: SupportsFloat | SupportsIndex = 0, arbFFUnits: rev._rev.SparkClosedLoopController.ArbFFUnits = <ArbFFUnits.kVoltage: 0>) rev._rev.REVLibError

Set the controller setpoint based on the selected control mode.

Deprecated:

Use SetSetpoint instead.

Parameters:
  • setpoint – The setpoint to set depending on the control mode. For: - basic duty cycle control this should be a value between -1 and 1 - Voltage Control: Voltage (volts) - Velocity Control: Velocity (RPM) - Position Control: Position (Rotations) - Current Control: Current (Amps). The units can be changed for position and velocity by a scale factor using AlternateEncoderConfig::PositionConversionFactor(), or ExternalEncoderConfig::PositionConversionFactor(), or EncoderConfig::PositionConversionFactor() or AlternateEncoderConfig::VelocityConversionFactor(), or ExternalEncoderConfig::VelocityConversionFactor(), or EncoderConfig::VelocityConversionFactor().

  • ctrl – Is the control type

  • slot – The ClosedLoopSlot to use

  • arbFeedforward – A value from -32.0 to 32.0 which is a 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 for arbitrary feed-forward

Returns:

REVLibError::kOk if successful

setSetpoint(setpoint: SupportsFloat | SupportsIndex, ctrl: rev._rev.SparkLowLevel.ControlType, slot: rev._rev.ClosedLoopSlot = <ClosedLoopSlot.kSlot0: 0>, arbFeedforward: SupportsFloat | SupportsIndex = 0, arbFFUnits: rev._rev.SparkClosedLoopController.ArbFFUnits = <ArbFFUnits.kVoltage: 0>) rev._rev.REVLibError

Set the controller setpoint based on the selected control mode.

Parameters:
  • setpoint – The setpoint to set depending on the control mode. For: - basic duty cycle control this should be a value between -1 and 1 - Voltage Control: Voltage (volts) - Velocity Control: Velocity (RPM) - Position Control: Position (Rotations) - Current Control: Current (Amps). The units can be changed for position and velocity by a scale factor using AlternateEncoderConfig::PositionConversionFactor(), or ExternalEncoderConfig::PositionConversionFactor(), or EncoderConfig::PositionConversionFactor() or AlternateEncoderConfig::VelocityConversionFactor(), or ExternalEncoderConfig::VelocityConversionFactor(), or EncoderConfig::VelocityConversionFactor().

  • ctrl – Is the control type

  • slot – The ClosedLoopSlot to use

  • arbFeedforward – A value from -32.0 to 32.0 which is a 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 for arbitrary feed-forward

Returns:

REVLibError::kOk if successful