Package edu.wpi.first.wpilibj.drive
Class RobotDriveBase
- java.lang.Object
-
- edu.wpi.first.wpilibj.MotorSafety
-
- edu.wpi.first.wpilibj.drive.RobotDriveBase
-
- All Implemented Interfaces:
Sendable
,AutoCloseable
- Direct Known Subclasses:
DifferentialDrive
,KilloughDrive
,MecanumDrive
public abstract class RobotDriveBase extends MotorSafety implements Sendable, AutoCloseable
Common base class for drive platforms.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RobotDriveBase.MotorType
The location of a motor on the robot for the purpose of driving.
-
Field Summary
Fields Modifier and Type Field Description static double
kDefaultDeadband
static double
kDefaultMaxOutput
protected double
m_deadband
protected double
m_maxOutput
-
Constructor Summary
Constructors Constructor Description RobotDriveBase()
RobotDriveBase constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
addChild(Object child)
Add a child component.protected double
applyDeadband(double value, double deadband)
Returns 0.0 if the given value is within the specified range around zero.void
close()
void
feedWatchdog()
Feed the motor safety object.abstract String
getDescription()
String
getName()
Gets the name of thisSendable
object.String
getSubsystem()
Gets the subsystem name of thisSendable
object.protected double
limit(double value)
Limit motor values to the -1.0 to +1.0 range.protected void
normalize(double[] wheelSpeeds)
Normalize all wheel speeds if the magnitude of any wheel is greater than 1.0.void
setDeadband(double deadband)
Sets the deadband applied to the drive inputs (e.g., joystick values).void
setMaxOutput(double maxOutput)
Configure the scaling factor for using drive methods with motor controllers in a mode other than PercentVbus or to limit the maximum output.void
setName(String name)
Sets the name of thisSendable
object.protected void
setName(String moduleType, int channel)
Sets the name of the sensor with a channel number.protected void
setName(String moduleType, int moduleNumber, int channel)
Sets the name of the sensor with a module and channel number.void
setSubsystem(String subsystem)
Sets the subsystem name of thisSendable
object.abstract void
stopMotor()
-
Methods inherited from class edu.wpi.first.wpilibj.MotorSafety
check, checkMotors, feed, getExpiration, isAlive, isSafetyEnabled, setExpiration, setSafetyEnabled
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface edu.wpi.first.wpilibj.Sendable
initSendable, setName
-
-
-
-
Field Detail
-
kDefaultDeadband
public static final double kDefaultDeadband
- See Also:
- Constant Field Values
-
kDefaultMaxOutput
public static final double kDefaultMaxOutput
- See Also:
- Constant Field Values
-
m_deadband
protected double m_deadband
-
m_maxOutput
protected double m_maxOutput
-
-
Method Detail
-
close
public void close()
- Specified by:
close
in interfaceAutoCloseable
-
getName
public final String getName()
Description copied from interface:Sendable
Gets the name of thisSendable
object.
-
setName
public final void setName(String name)
Description copied from interface:Sendable
Sets the name of thisSendable
object.
-
setName
protected final void setName(String moduleType, int channel)
Sets the name of the sensor with a channel number.- Parameters:
moduleType
- A string that defines the module name in the label for the valuechannel
- The channel number the device is plugged into
-
setName
protected final void setName(String moduleType, int moduleNumber, int channel)
Sets the name of the sensor with a module and channel number.- Parameters:
moduleType
- A string that defines the module name in the label for the valuemoduleNumber
- The number of the particular module typechannel
- The channel number the device is plugged into (usually PWM)
-
getSubsystem
public final String getSubsystem()
Description copied from interface:Sendable
Gets the subsystem name of thisSendable
object.- Specified by:
getSubsystem
in interfaceSendable
- Returns:
- Subsystem name
-
setSubsystem
public final void setSubsystem(String subsystem)
Description copied from interface:Sendable
Sets the subsystem name of thisSendable
object.- Specified by:
setSubsystem
in interfaceSendable
- Parameters:
subsystem
- subsystem name
-
addChild
protected final void addChild(Object child)
Add a child component.- Parameters:
child
- child component
-
setDeadband
public void setDeadband(double deadband)
Sets the deadband applied to the drive inputs (e.g., joystick values).The default value is 0.02. Inputs smaller than the deadband are set to 0.0 while inputs larger than the deadband are scaled from 0.0 to 1.0. See
applyDeadband(double, double)
.- Parameters:
deadband
- The deadband to set.
-
setMaxOutput
public void setMaxOutput(double maxOutput)
Configure the scaling factor for using drive methods with motor controllers in a mode other than PercentVbus or to limit the maximum output.The default value is 1.0.
- Parameters:
maxOutput
- Multiplied with the output percentage computed by the drive functions.
-
feedWatchdog
public void feedWatchdog()
Feed the motor safety object. Resets the timer that will stop the motors if it completes.- See Also:
MotorSafety.feed()
-
stopMotor
public abstract void stopMotor()
- Specified by:
stopMotor
in classMotorSafety
-
getDescription
public abstract String getDescription()
- Specified by:
getDescription
in classMotorSafety
-
limit
protected double limit(double value)
Limit motor values to the -1.0 to +1.0 range.
-
applyDeadband
protected double applyDeadband(double value, double deadband)
Returns 0.0 if the given value is within the specified range around zero. The remaining range between the deadband and 1.0 is scaled from 0.0 to 1.0.- Parameters:
value
- value to clipdeadband
- range around zero
-
normalize
protected void normalize(double[] wheelSpeeds)
Normalize all wheel speeds if the magnitude of any wheel is greater than 1.0.
-
-