Class ProfiledPIDSubsystem

  • All Implemented Interfaces:
    Sendable, Subsystem

    public abstract class ProfiledPIDSubsystem
    extends SubsystemBase
    A subsystem that uses a ProfiledPIDController to control an output. The controller is run synchronously from the subsystem's periodic() method.
    • Constructor Detail

      • ProfiledPIDSubsystem

        public ProfiledPIDSubsystem​(ProfiledPIDController controller,
                                    double initialPosition)
        Creates a new ProfiledPIDSubsystem.
        Parameters:
        controller - the ProfiledPIDController to use
        initialPosition - the initial goal position of the controller
      • ProfiledPIDSubsystem

        public ProfiledPIDSubsystem​(ProfiledPIDController controller)
        Creates a new ProfiledPIDSubsystem. Initial goal position is zero.
        Parameters:
        controller - the ProfiledPIDController to use
    • Method Detail

      • periodic

        public void periodic()
        Description copied from interface: Subsystem
        This method is called periodically by the CommandScheduler. Useful for updating subsystem-specific state that you don't want to offload to a Command. Teams should try to be consistent within their own codebases about which responsibilities will be handled by Commands, and which will be handled here.
      • setGoal

        public void setGoal​(TrapezoidProfile.State goal)
        Sets the goal state for the subsystem.
        Parameters:
        goal - The goal state for the subsystem's motion profile.
      • setGoal

        public void setGoal​(double goal)
        Sets the goal state for the subsystem. Goal velocity assumed to be zero.
        Parameters:
        goal - The goal position for the subsystem's motion profile.
      • useOutput

        protected abstract void useOutput​(double output,
                                          TrapezoidProfile.State setpoint)
        Uses the output from the ProfiledPIDController.
        Parameters:
        output - the output of the ProfiledPIDController
        setpoint - the setpoint state of the ProfiledPIDController, for feedforward
      • getMeasurement

        protected abstract double getMeasurement()
        Returns the measurement of the process variable used by the ProfiledPIDController.
        Returns:
        the measurement of the process variable
      • enable

        public void enable()
        Enables the PID control. Resets the controller.
      • disable

        public void disable()
        Disables the PID control. Sets output to zero.
      • isEnabled

        public boolean isEnabled()
        Returns whether the controller is enabled.
        Returns:
        Whether the controller is enabled.