|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectedu.wpi.first.wpilibj.command.Subsystem
edu.wpi.first.wpilibj.command.PIDSubsystem
public abstract class PIDSubsystem
This class is designed to handle the case where there is a Subsystem
which uses a single PIDController
almost constantly (for instance,
an elevator which attempts to stay at a constant height).
It provides some convenience methods to run an internal PIDController
.
It also allows access to the internal PIDController
in order to give total control
to the programmer.
Constructor Summary | |
---|---|
PIDSubsystem(double p,
double i,
double d)
Instantiates a PIDSubsystem that will use the given p, i and d values. |
|
PIDSubsystem(double p,
double i,
double d,
double period)
Instantiates a PIDSubsystem that will use the given p, i and d values. |
|
PIDSubsystem(java.lang.String name,
double p,
double i,
double d)
Instantiates a PIDSubsystem that will use the given p, i and d values. |
|
PIDSubsystem(java.lang.String name,
double p,
double i,
double d,
double period)
Instantiates a PIDSubsystem that will use the given p, i and d values. |
Method Summary | |
---|---|
void |
disable()
Disables the internal PIDController |
void |
enable()
Enables the internal PIDController |
protected PIDController |
getPIDController()
Returns the PIDController used by this PIDSubsystem . |
double |
getPosition()
Returns the current position |
double |
getSetpoint()
Returns the setpoint. |
java.lang.String |
getType()
Returns the type of the data. |
protected abstract double |
returnPIDInput()
Returns the input for the pid loop. |
void |
setSetpoint(double setpoint)
Sets the setpoint to the given value. |
protected void |
setSetpointRange(double a,
double b)
Sets the range that the setpoint may be in. |
void |
setSetpointRelative(double deltaSetpoint)
Adds the given value to the setpoint. |
protected abstract void |
usePIDOutput(double output)
Uses the value that the pid loop calculated. |
Methods inherited from class edu.wpi.first.wpilibj.command.Subsystem |
---|
getCurrentCommand, getDefaultCommand, getName, getTable, initDefaultCommand, setDefaultCommand, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public PIDSubsystem(java.lang.String name, double p, double i, double d)
PIDSubsystem
that will use the given p, i and d values.
name
- the namep
- the proportional valuei
- the integral valued
- the derivative valuepublic PIDSubsystem(java.lang.String name, double p, double i, double d, double period)
PIDSubsystem
that will use the given p, i and d values. It will also space the time
between PID loop calculations to be equal to the given period.
name
- the namep
- the proportional valuei
- the integral valued
- the derivative valueperiod
- the time (in seconds) between calculationspublic PIDSubsystem(double p, double i, double d)
PIDSubsystem
that will use the given p, i and d values.
It will use the class name as its name.
p
- the proportional valuei
- the integral valued
- the derivative valuepublic PIDSubsystem(double p, double i, double d, double period)
PIDSubsystem
that will use the given p, i and d values.
It will use the class name as its name.
It will also space the time
between PID loop calculations to be equal to the given period.
p
- the proportional valuei
- the integral valued
- the derivative valueperiod
- the time (in seconds) between calculationsMethod Detail |
---|
protected PIDController getPIDController()
PIDController
used by this PIDSubsystem
.
Use this if you would like to fine tune the pid loop.
Notice that calling setSetpoint(...)
on the controller
will not result in the setpoint being trimmed to be in
the range defined by setSetpointRange(...)
.
PIDController
used by this PIDSubsystem
public void setSetpointRelative(double deltaSetpoint)
setRange(...)
was used,
then the bounds will still be honored by this method.
deltaSetpoint
- the change in the setpointpublic void setSetpoint(double setpoint)
setRange(...)
was called,
then the given setpoint
will be trimmed to fit within the range.
setpoint
- the new setpointpublic double getSetpoint()
public double getPosition()
protected void setSetpointRange(double a, double b)
setSetpoint(...)
will force the setpoint within the given values.
a
- the first value (can be the min or max, it doesn't matter)b
- the second value (can be the min or max, it doesn't matter)protected abstract double returnPIDInput()
It returns the input for the pid loop, so if this Subsystem was based off of a gyro, then it should return the angle of the gyro
All subclasses of PIDSubsystem
must override this method.
protected abstract void usePIDOutput(double output)
driveline.tankDrive(output, -output)
All subclasses of PIDSubsystem
must override this method.
output
- the value the pid loop calculatedpublic void enable()
PIDController
public void disable()
PIDController
public java.lang.String getType()
SmartDashboardData
getTable()
.
For instance, if the type was "Button", then the SmartDashboard would show the data
as a button on the desktop and would know to look at and modify the "pressed" field in the
NetworkTable
returned by getTable()
.
getType
in interface SmartDashboardData
getType
in class Subsystem
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |