X-Git-Url: http://challenge-bot.com/repos/?a=blobdiff_plain;f=src%2Forg%2Fusfirst%2Ffrc%2Fteam3501%2Frobot%2Fsubsystems%2FDriveTrain.java;h=f3df881225b0e65deb11323b234fa46928246f99;hb=ba9f0b126afd5973b11a22dd6640d8d6f0822f5a;hp=f30d4c2d2d41c8e62fd4b01e78cd054e75e8b89a;hpb=cef1f36da71950bc32d74d2ba0477a51f478f209;p=3501%2F2017steamworks diff --git a/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java b/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java index f30d4c2..f3df881 100644 --- a/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java @@ -1,6 +1,7 @@ package org.usfirst.frc.team3501.robot.subsystems; import org.usfirst.frc.team3501.robot.Constants; +import org.usfirst.frc.team3501.robot.MathLib; import org.usfirst.frc.team3501.robot.commands.driving.JoystickDrive; import com.ctre.CANTalon; @@ -13,28 +14,28 @@ import edu.wpi.first.wpilibj.RobotDrive; import edu.wpi.first.wpilibj.command.Subsystem; public class DriveTrain extends Subsystem { - public static double driveP = 0.006, driveI = 0.001, driveD = -0.002; - public static double turnP = 0.004, turnI = 0.0013, turnD = -0.005; + public static double driveP = 0.01, driveI = 0.00115, driveD = -0.002; + public static double smallTurnP = 0.004, smallTurnI = 0.0013, + smallTurnD = 0.005; + public static double largeTurnP = .003, largeTurnI = .0012, largeTurnD = .006; public static double driveStraightGyroP = 0.01; - public static final double WHEEL_DIAMETER = 6; // inches - public static final int ENCODER_PULSES_PER_REVOLUTION = 256; + public static final double WHEEL_DIAMETER = 4; // inches + public static final double ENCODER_PULSES_PER_REVOLUTION = 256; public static final double INCHES_PER_PULSE = WHEEL_DIAMETER * Math.PI / ENCODER_PULSES_PER_REVOLUTION; - public static final int MAINTAIN_CLIMBED_POSITION = 0; - public static final int TIME_TO_CLIMB_FOR = 0; + private static DriveTrain driveTrain; private final CANTalon frontLeft, frontRight, rearLeft, rearRight; private final RobotDrive robotDrive; private final Encoder leftEncoder, rightEncoder; - private final DoubleSolenoid leftGearPiston, rightGearPiston; + private final DoubleSolenoid rightDriveTrainPiston; + // private final Solenoid leftDriveTrainPiston; + private final DoubleSolenoid gearManipulatorPiston; private ADXRS450_Gyro imu; - private boolean isClimbing; - private static double CLIMBER_SPEED;; - private DriveTrain() { // MOTOR CONTROLLERS frontLeft = new CANTalon(Constants.DriveTrain.FRONT_LEFT); @@ -57,14 +58,17 @@ public class DriveTrain extends Subsystem { this.imu = new ADXRS450_Gyro(Constants.DriveTrain.GYRO_PORT); // TODO: Not sure if MODULE_NUMBER should be the same for both - leftGearPiston = new DoubleSolenoid(Constants.DriveTrain.MODULE_NUMBER, - Constants.DriveTrain.LEFT_GEAR_PISTON_FORWARD, - Constants.DriveTrain.LEFT_GEAR_PISTON_REVERSE); - rightGearPiston = new DoubleSolenoid(Constants.DriveTrain.MODULE_NUMBER, - Constants.DriveTrain.RIGHT_GEAR_PISTON_FORWARD, - Constants.DriveTrain.RIGHT_GEAR_PISTON_REVERSE); + // leftDriveTrainPiston = new Solenoid(Constants.DriveTrain.PISTON_MODULE, + // Constants.DriveTrain.LEFT_GEAR_PISTON_PORT); + rightDriveTrainPiston = new DoubleSolenoid( + Constants.DriveTrain.PISTON_MODULE, + Constants.DriveTrain.DRIVETRAIN_GEAR_FORWARD, + Constants.DriveTrain.DRIVETRAIN_GEAR_REVERSE); - CLIMBER_SPEED = Constants.DriveTrain.CLIMBER_SPEED; + gearManipulatorPiston = new DoubleSolenoid( + Constants.DriveTrain.PISTON_MODULE, + Constants.DriveTrain.GEAR_MANIPULATOR_PISTON_FORWARD, + Constants.DriveTrain.GEAR_MANIPULATOR_PISTON_REVERSE); } public static DriveTrain getDriveTrain() { @@ -75,7 +79,10 @@ public class DriveTrain extends Subsystem { } // DRIVE METHODS - public void setMotorValues(final double left, final double right) { + public void setMotorValues(double left, double right) { + left = MathLib.restrictToRange(left, -1.0, 1.0); + right = MathLib.restrictToRange(right, -1.0, 1.0); + frontLeft.set(left); rearLeft.set(left); @@ -84,7 +91,14 @@ public class DriveTrain extends Subsystem { } public void joystickDrive(final double thrust, final double twist) { - robotDrive.arcadeDrive(thrust, twist, true); + if ((thrust < 0.1 && thrust > -0.1) && (twist < 0.1 && twist > -0.1)) + robotDrive.arcadeDrive(0, 0, true); + else + robotDrive.arcadeDrive(thrust, twist, true); + } + + public void tankDrive(double left, double right) { + robotDrive.tankDrive(left, right); } public void stop() { @@ -149,51 +163,61 @@ public class DriveTrain extends Subsystem { * @return a value that is the current setpoint for the piston kReverse or * KForward */ - public Value getLeftGearPistonValue() { - return leftGearPiston.get(); - } + // public boolean getLeftDriveTrainPiston() { + // return leftDriveTrainPiston.get(); + // } /* * @return a value that is the current setpoint for the piston kReverse or * KForward */ - public Value getRightGearPistonValue() { - return rightGearPiston.get(); + public Value getRightDriveTrainPiston() { + return rightDriveTrainPiston.get(); } /* * Changes the ball shift gear assembly to high */ public void setHighGear() { - changeGear(Constants.DriveTrain.HIGH_GEAR); + changeGear(Constants.DriveTrain.FORWARD_PISTON_VALUE); } /* * Changes the ball shift gear assembly to low */ public void setLowGear() { - changeGear(Constants.DriveTrain.LOW_GEAR); + changeGear(Constants.DriveTrain.REVERSE_PISTON_VALUE); } /* * Changes the gear to a DoubleSolenoid.Value */ private void changeGear(DoubleSolenoid.Value gear) { - leftGearPiston.set(gear); - rightGearPiston.set(gear); + System.out.println("shifting to " + gear); + rightDriveTrainPiston.set(gear); + System.out.println("after: " + this.getRightDriveTrainPiston()); + + // + // if (gear == Constants.DriveTrain.FORWARD_PISTON_VALUE) + // leftDriveTrainPiston.set(Constants.DriveTrain.EXTEND_VALUE); + // else + // leftDriveTrainPiston.set(Constants.DriveTrain.RETRACT_VALUE); } - @Override - protected void initDefaultCommand() { - setDefaultCommand(new JoystickDrive()); + public Value getGearManipulatorPistonValue() { + return gearManipulatorPiston.get(); } - public boolean isClimbing() { - return this.isClimbing; + public void extendGearManipulatorPiston() { + gearManipulatorPiston.set(Constants.DriveTrain.FORWARD_PISTON_VALUE); } - public double getClimbingSpeed() { - return this.CLIMBER_SPEED; + public void retractGearManipulatorPiston() { + gearManipulatorPiston.set(Constants.DriveTrain.REVERSE_PISTON_VALUE); } + @Override + protected void initDefaultCommand() { + setDefaultCommand(new JoystickDrive()); + } }