Package org.hyperonline.hyperlib.driving
Class TankDriveParams
- java.lang.Object
-
- org.hyperonline.hyperlib.driving.TankDriveParams
-
- All Implemented Interfaces:
DriveParameters
public class TankDriveParams extends java.lang.Object implements DriveParameters
A class which represents tank drive. This mode takes two inputs: left and right, and drives each side of the robot independently. This class simply wrapsDifferentialDrive.tankDrive(double, double, boolean)
. This class is immutable. That means you must construct a new instance each time you want to change the power to the drivetrain.
-
-
Constructor Summary
Constructors Constructor Description TankDriveParams(double left, double right, boolean squareInputs)
Construct a newTankDriveParams
object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
drive(edu.wpi.first.wpilibj.drive.DifferentialDrive driveTrain, double currentGyro)
Drive the robot.void
drive(edu.wpi.first.wpilibj.drive.MecanumDrive driveTrain, double currentGyro)
Drive the robot.double
left()
Get the left parameterdouble
right()
Get the right parameterboolean
squareInputs()
Get the squareInputs parameter
-
-
-
Constructor Detail
-
TankDriveParams
public TankDriveParams(double left, double right, boolean squareInputs)
Construct a newTankDriveParams
object.- Parameters:
left
- The power to the left side of the drivetrainright
- The power to the right side of the drivetrainsquareInputs
- Whether to square the inputs. This is desirable if the input is coming from a joystick, as it creates a "soft deadzone". If coming from another source, like a PID controller, this should befalse
.
-
-
Method Detail
-
drive
public void drive(edu.wpi.first.wpilibj.drive.DifferentialDrive driveTrain, double currentGyro)
Drive the robot. This method should not call any "stateful" methods of the drivetrain (anything that starts with "set") to allow one to switch between modes easily. TODO: pass a wrapper of DifferentialDrive, which only allows certain methods TODO: remove currentGyro. This is pretty irrelevant, and can be obtained in other ways.- Specified by:
drive
in interfaceDriveParameters
- Parameters:
driveTrain
- ADifferentialDrive
object representing the drivetrain of the robot.currentGyro
- The current gyro heading, if a gyro exists. Nothing should use this right now, so just pass in 0.0 if you're not sure.
-
drive
public void drive(edu.wpi.first.wpilibj.drive.MecanumDrive driveTrain, double currentGyro) throws WrongDriveTypeException
Drive the robot. This method should not call any "stateful" methods of the drivetrain (anything that starts with "set") to allow one to switch between modes easily.- Specified by:
drive
in interfaceDriveParameters
- Parameters:
driveTrain
- AMecanumDrive
object representing the drivetrain of the robot.currentGyro
- The current gyro heading, if a gyro exists. Nothing should use this right now, so just pass in 0.0 if you're not sure.- Throws:
WrongDriveTypeException
- if an incompatible Drive type is used
-
left
public double left()
Get the left parameter- Returns:
- the left parameter
-
right
public double right()
Get the right parameter- Returns:
- the right parameter
-
squareInputs
public boolean squareInputs()
Get the squareInputs parameter- Returns:
- the squareInputs parameter
-
-