Class SwerveModule<DriveMotorT extends CommonTalon, SteerMotorT extends CommonTalon, EncoderT extends ParentDevice>

java.lang.Object
com.ctre.phoenix6.swerve.SwerveModule<DriveMotorT, SteerMotorT, EncoderT>
Type Parameters:
DriveMotorT - Type of the drive motor
SteerMotorT - Type of the steer motor
EncoderT - Type of the steer encoder

public class SwerveModule<DriveMotorT extends CommonTalon, SteerMotorT extends CommonTalon, EncoderT extends ParentDevice> extends Object
Swerve Module class that encapsulates a swerve module powered by CTR Electronics devices.

This class handles the hardware devices and configures them for swerve module operation using the Phoenix 6 API.

This class constructs hardware devices internally, so the user only specifies the constants (IDs, PID gains, gear ratios, etc). Getters for these hardware devices are available.

  • Field Details

    • kNumConfigAttempts

      protected static final int kNumConfigAttempts
      Number of times to attempt config applies.
      See Also:
    • m_drivetrainId

      protected final int m_drivetrainId
      ID of the native drivetrain instance, used for JNI calls.
    • m_moduleIdx

      protected final int m_moduleIdx
      Index of this module in the native drivetrain, used for JNI calls.
  • Constructor Details

    • SwerveModule

      public SwerveModule(SwerveDrivetrain.DeviceConstructor<DriveMotorT> driveMotorConstructor, SwerveDrivetrain.DeviceConstructor<SteerMotorT> steerMotorConstructor, SwerveDrivetrain.DeviceConstructor<EncoderT> encoderConstructor, SwerveModuleConstants<?,?,?> constants, CANBus canbus, int drivetrainId, int index)
      Construct a SwerveModule with the specified constants.
      Parameters:
      driveMotorConstructor - Constructor for the drive motor, such as TalonFX::new
      steerMotorConstructor - Constructor for the steer motor, such as TalonFX::new
      encoderConstructor - Constructor for the azimuth encoder, such as CANcoder::new
      constants - Constants used to construct the module
      canbus - The CAN bus this module is on
      drivetrainId - ID of the swerve drivetrain
      index - Index of this swerve module
  • Method Details

    • apply

      public void apply(SwerveModule.ModuleRequest moduleRequest)
      Applies the desired SwerveModule.ModuleRequest to this module.
      Parameters:
      moduleRequest - The request to apply to this module
    • apply

      public void apply(ControlRequest driveRequest, ControlRequest steerRequest)
      Controls this module using the specified drive and steer control requests. This is intended only to be used for characterization of the robot; do not use this for normal use.
      Parameters:
      driveRequest - The control request to apply to the drive motor
      steerRequest - The control request to apply to the steer motor
    • getPosition

      public final SwerveModulePosition getPosition(boolean refresh)
      Gets the state of this module and passes it back as a SwerveModulePosition object with latency compensated values.

      This function is blocking when it performs a refresh.

      Parameters:
      refresh - True if the signals should be refreshed
      Returns:
      SwerveModulePosition containing this module's state
    • getCachedPosition

      public final SwerveModulePosition getCachedPosition()
      Gets the last cached swerve module position. This differs from getPosition(boolean) in that it will not perform any latency compensation or refresh the signals.
      Returns:
      Last cached SwerveModulePosition
    • getCurrentVelocity

      public final SwerveModuleVelocity getCurrentVelocity()
      Get the current velocity of the module.

      This is typically used for telemetry, as the SwerveModulePosition is used for odometry.

      Returns:
      Current velocity of the module
    • getTargetVelocity

      public final SwerveModuleVelocity getTargetVelocity()
      Get the target velocity of the module.

      This is typically used for telemetry.

      Returns:
      Target velocity of the module
    • resetPosition

      public void resetPosition()
      Resets this module's drive motor position to 0 rotations.
    • getDriveClosedLoopOutputType

      public final SwerveModuleConstants.ClosedLoopOutputType getDriveClosedLoopOutputType()
      Gets the closed-loop output type to use for the drive motor.
      Returns:
      Drive motor closed-loop output type
    • getSteerClosedLoopOutputType

      public final SwerveModuleConstants.ClosedLoopOutputType getSteerClosedLoopOutputType()
      Gets the closed-loop output type to use for the steer motor.
      Returns:
      Steer motor closed-loop output type
    • getDriveMotor

      public final DriveMotorT getDriveMotor()
      Gets this module's Drive Motor reference.

      This should be used only to access signals and change configurations that the swerve drivetrain does not configure itself.

      Returns:
      This module's Drive Motor reference
    • getSteerMotor

      public final SteerMotorT getSteerMotor()
      Gets this module's Steer Motor reference.

      This should be used only to access signals and change configurations that the swerve drivetrain does not configure itself.

      Returns:
      This module's Steer Motor reference
    • getEncoder

      public final EncoderT getEncoder()
      Gets this module's azimuth encoder reference.

      This should be used only to access signals and change configurations that the swerve drivetrain does not configure itself.

      Returns:
      This module's azimuth encoder reference