Class TalonFX

All Implemented Interfaces:
IFollower, IMotorController, IMotorControllerEnhanced, IInvertable, IOutputSignal
Direct Known Subclasses:
WPI_TalonFX

public class TalonFX extends BaseTalon
CTRE Talon FX Motor Controller when used on CAN Bus.
 
 // Example usage of a TalonFX motor controller
 TalonFX motor = new TalonFX(0); // creates a new TalonFX with ID 0

 TalonFXConfiguration config = new TalonFXConfiguration();
 config.supplyCurrLimit.enable = true;
 config.supplyCurrLimit.triggerThresholdCurrent = 40; // the peak supply current, in amps
 config.supplyCurrLimit.triggerThresholdTime = 1.5; // the time at the peak supply current before the limit triggers, in sec
 config.supplyCurrLimit.currentLimit = 30; // the current to maintain if the peak supply limit is triggered
 motor.configAllSettings(config); // apply the config settings; this selects the quadrature encoder

 motor.set(TalonFXControlMode.PercentOutput, 0.5); // runs the motor at 50% power

 System.out.println(motor.getSelectedSensorPosition()); // prints the position of the selected sensor
 System.out.println(motor.getSelectedSensorVelocity()); // prints the velocity recorded by the selected sensor
 System.out.println(motor.getMotorOutputPercent()); // prints the percent output of the motor (0.5)
 System.out.println(motor.getStatorCurrent()); // prints the output current of the motor

 ErrorCode error = motor.getLastError(); // gets the last error generated by the motor controller
 Faults faults = new Faults();
 ErrorCode faultsError = motor.getFaults(faults); // fills faults with the current motor controller faults; returns the last error generated

 motor.setStatusFramePeriod(StatusFrame.Status_2_Feedback0, 10); // changes the period of the Status 2 frame (getSelectedSensor*()) to 10ms
 
 
  • Constructor Details

    • TalonFX

      public TalonFX(int deviceNumber, String canbus)
      Constructor
      Parameters:
      deviceNumber - [0,62]
      canbus - Name of the CANbus; can be a SocketCAN interface (on Linux), or a CANivore device name or serial number
    • TalonFX

      public TalonFX(int deviceNumber)
      Constructor
      Parameters:
      deviceNumber - [0,62]
  • Method Details

    • set

      public void set(TalonFXControlMode mode, double value)
      Sets the appropriate output on the talon, depending on the mode.
      Parameters:
      mode - The output mode to apply. In PercentOutput, the output is between -1.0 and 1.0, with 0.0 as stopped. In Current mode, output value is in amperes. In Velocity mode, output value is in position change / 100ms. In Position mode, output value is in encoder ticks or an analog value, depending on the sensor. In Follower mode, the output value is the integer device ID of the talon to duplicate.
      value - The setpoint value, as described above. Standard Driving Example: _talonLeft.set(ControlMode.PercentOutput, leftJoy); _talonRght.set(ControlMode.PercentOutput, rghtJoy);
    • set

      public void set(TalonFXControlMode mode, double demand0, DemandType demand1Type, double demand1)
      Parameters:
      mode - Sets the appropriate output on the talon, depending on the mode.
      demand0 - The output value to apply. such as advanced feed forward and/or auxiliary close-looping in firmware. In PercentOutput, the output is between -1.0 and 1.0, with 0.0 as stopped. In Current mode, output value is in amperes. In Velocity mode, output value is in position change / 100ms. In Position mode, output value is in encoder ticks or an analog value, depending on the sensor. See In Follower mode, the output value is the integer device ID of the talon to duplicate.
      demand1Type - The demand type for demand1. Neutral: Ignore demand1 and apply no change to the demand0 output. AuxPID: Use demand1 to set the target for the auxiliary PID 1. Auxiliary PID is always executed as standard Position PID control. ArbitraryFeedForward: Use demand1 as an arbitrary additive value to the demand0 output. In PercentOutput the demand0 output is the motor output, and in closed-loop modes the demand0 output is the output of PID0.
      demand1 - Supplmental output value. AuxPID: Target position in Sensor Units ArbitraryFeedForward: Percent Output between -1.0 and 1.0 Arcade Drive Example: _talonLeft.set(ControlMode.PercentOutput, joyForward, DemandType.ArbitraryFeedForward, +joyTurn); _talonRght.set(ControlMode.PercentOutput, joyForward, DemandType.ArbitraryFeedForward, -joyTurn); Drive Straight Example: Note: Selected Sensor Configuration is necessary for both PID0 and PID1. _talonLeft.follow(_talonRght, FollwerType.AuxOutput1); _talonRght.set(ControlMode.PercentOutput, joyForward, DemandType.AuxPID, desiredRobotHeading); Drive Straight to a Distance Example: Note: Other configurations (sensor selection, PID gains, etc.) need to be set. _talonLeft.follow(_talonRght, FollwerType.AuxOutput1); _talonRght.set(ControlMode.MotionMagic, targetDistance, DemandType.AuxPID, desiredRobotHeading);
    • setInverted

      public void setInverted(TalonFXInvertType invertType)
      Inverts the hbridge output of the motor controller in relation to the master if present This does not impact sensor phase and should not be used to correct sensor polarity. This will allow you to either: - Spin counterclockwise (default) - Spin Clockwise (invert direction) - Always follow the master regardless of master's inversion - Always oppose the master regardless of master's inversion
      Parameters:
      invertType - Invert state to set.
    • configSelectedFeedbackSensor

      public ErrorCode configSelectedFeedbackSensor(TalonFXFeedbackDevice feedbackDevice, int pidIdx, int timeoutMs)
      Select the feedback device for the motor controller.
      Parameters:
      feedbackDevice - Talon FX feedback Device to select.
      pidIdx - 0 for Primary closed-loop. 1 for auxiliary closed-loop.
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configSupplyCurrentLimit

      Configures the supply (input) current limit.
      Specified by:
      configSupplyCurrentLimit in interface IMotorControllerEnhanced
      Overrides:
      configSupplyCurrentLimit in class BaseTalon
      Parameters:
      currLimitCfg - Current limit configuration
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configSupplyCurrentLimit

      Configures the supply (input) current limit.
      Parameters:
      currLimitCfg - Current limit configuration
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configStatorCurrentLimit

      Configures the stator (output) current limit.
      Parameters:
      currLimitCfg - Current limit configuration
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configStatorCurrentLimit

      Configures the stator (output) current limit.
      Parameters:
      currLimitCfg - Current limit configuration
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configGetSupplyCurrentLimit

      public ErrorCode configGetSupplyCurrentLimit(SupplyCurrentLimitConfiguration currLimitConfigsToFill, int timeoutMs)
      Gets the supply (input) current limit configuration.
      Parameters:
      currLimitConfigsToFill - Configuration object to fill with read values.
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configGetSupplyCurrentLimit

      Gets the supply (input) current limit configuration.
      Parameters:
      currLimitConfigsToFill - Configuration object to fill with read values..
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configGetStatorCurrentLimit

      public ErrorCode configGetStatorCurrentLimit(StatorCurrentLimitConfiguration currLimitConfigsToFill, int timeoutMs)
      Gets the stator (output) current limit configuration.
      Parameters:
      currLimitConfigsToFill - Configuration object to fill with read values.
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configGetStatorCurrentLimit

      Gets the stator (output) current limit configuration.
      Parameters:
      currLimitConfigsToFill - Configuration object to fill with read values.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configMotorCommutation

      public ErrorCode configMotorCommutation(MotorCommutation motorCommutation, int timeoutMs)
      Configure the motor commutation type.
      Parameters:
      motorCommutation - Motor Commutation Type.
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
    • configMotorCommutation

      Configure the motor commutation type.
      Parameters:
      motorCommutation - Motor Commutation Type.
    • configGetMotorCommutation

      Parameters:
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out.
      Returns:
      The motor commutation type.
    • configGetMotorCommutation

      Returns:
      The motor commutation type.
    • configIntegratedSensorAbsoluteRange

      public ErrorCode configIntegratedSensorAbsoluteRange(AbsoluteSensorRange absoluteSensorRange, int timeoutMs)
      Sets the signage and range of the "Absolute Position" signal. Choose unsigned for an absolute range of [0,+1) rotations, [0,360) deg, etc... Choose signed for an absolute range of [-0.5,+0.5) rotations, [-180,+180) deg, etc...
      Parameters:
      absoluteSensorRange - Desired Sign/Range for the absolute position register.
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configIntegratedSensorAbsoluteRange

      Sets the signage and range of the "Absolute Position" signal. Choose unsigned for an absolute range of [0,+1) rotations, [0,360) deg, etc... Choose signed for an absolute range of [-0.5,+0.5) rotations, [-180,+180) deg, etc...
      Parameters:
      absoluteSensorRange - Desired Sign/Range for the absolute position register.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configIntegratedSensorOffset

      public ErrorCode configIntegratedSensorOffset(double offsetDegrees, int timeoutMs)
      Adjusts the zero point for the integrated sensor absolute position register. The absolute position of the sensor will always have a discontinuity (360 -> 0 deg) or (+180 -> -180) and a hard-limited mechanism may have such a discontinuity in its functional range. In which case use this config to move the discontinuity outside of the function range.
      Parameters:
      offsetDegrees - Offset in degrees
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configIntegratedSensorOffset

      public ErrorCode configIntegratedSensorOffset(double offsetDegrees)
      Adjusts the zero point for the integrated sensor absolute position register. The absolute position of the sensor will always have a discontinuity (360 -> 0 deg) or (+180 -> -180) and a hard-limited mechanism may have such a discontinuity in its functional range. In which case use this config to move the discontinuity outside of the function range.
      Parameters:
      offsetDegrees - Offset in degrees
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configIntegratedSensorInitializationStrategy

      Pick the strategy on how to initialize the integrated sensor register. Depending on the mechanism, it may be desirable to auto set the Position register to match the Absolute Position (swerve for example). Or it may be desired to zero the sensor on boot (drivetrain translation sensor or a relative servo). TIP: Tuner's self-test feature will report what the boot sensor value will be in the event the product is reset.
      Parameters:
      initializationStrategy - The sensor initialization strategy to use. This will impact the behavior the next time product boots up.
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configIntegratedSensorInitializationStrategy

      Pick the strategy on how to initialize the integrated sensor register. Depending on the mechanism, it may be desirable to auto set the Position register to match the Absolute Position (swerve for example). Or it may be desired to zero the sensor on boot (drivetrain translation sensor or a relative servo). TIP: Tuner's self-test feature will report what the boot sensor value will be in the event the product is reset.
      Parameters:
      initializationStrategy - The sensor initialization strategy to use. This will impact the behavior the next time product boots up.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • getSensorCollection

      Returns:
      object that can get/set individual raw sensor values.
    • getSimCollection

      Returns:
      object that can get/set simulation inputs.
    • configurePID

      protected ErrorCode configurePID(TalonFXPIDSetConfiguration pid, int pidIdx, int timeoutMs)
      Configures all PID set persistent settings (overloaded so timeoutMs is 50 ms and pidIdx is 0).
      Parameters:
      pid - Object with all of the PID set persistant settings
      pidIdx - 0 for Primary closed-loop. 1 for auxiliary closed-loop.
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configurePID

      Configures all PID set persistent settings (overloaded so timeoutMs is 50 ms and pidIdx is 0).
      Parameters:
      pid - Object with all of the PID set persistant settings
      Returns:
      Error Code generated by function. 0 indicates no error.
    • getPIDConfigs

      public void getPIDConfigs(TalonFXPIDSetConfiguration pid, int pidIdx, int timeoutMs)
      Gets all PID set persistant settings.
      Parameters:
      pid - Object with all of the PID set persistant settings
      pidIdx - 0 for Primary closed-loop. 1 for auxiliary closed-loop.
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
    • getPIDConfigs

      Gets all PID set persistant settings (overloaded so timeoutMs is 50 ms and pidIdx is 0).
      Parameters:
      pid - Object with all of the PID set persistant settings
    • configAllSettings

      public ErrorCode configAllSettings(TalonFXConfiguration allConfigs, int timeoutMs)
      Configures all persistent settings.
      Parameters:
      allConfigs - Object with all of the persistant settings
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • configAllSettings

      Configures all persistent settings.
      Parameters:
      allConfigs - Object with all of the persistant settings
      Returns:
      Error Code generated by function. 0 indicates no error.
    • getAllConfigs

      public ErrorCode getAllConfigs(TalonFXConfiguration allConfigs, int timeoutMs)
      Gets all persistant settings.
      Parameters:
      allConfigs - Object with all of the persistant settings
      timeoutMs - Timeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
      Returns:
      Error Code generated by function. 0 indicates no error.
    • getAllConfigs

      Gets all persistant settings (overloaded so timeoutMs is 50 ms).
      Parameters:
      allConfigs - Object with all of the persistant settings
      Returns:
      Error Code generated by function. 0 indicates no error.