Change to 2 space instead of 4 space per Danny's request
[3501/2015-FRC-Spark] / src / org / usfirst / frc3501 / RiceCatRobot / subsystems / DriveTrain.java
CommitLineData
f11ce98e
KZ
1package org.usfirst.frc3501.RiceCatRobot.subsystems;
2
3import org.usfirst.frc3501.RiceCatRobot.RobotMap;
4
5import edu.wpi.first.wpilibj.CANJaguar;
6import edu.wpi.first.wpilibj.Encoder;
7import edu.wpi.first.wpilibj.CounterBase.EncodingType;
8import edu.wpi.first.wpilibj.command.Subsystem;
9
10public class DriveTrain extends Subsystem {
e3bfff96
KZ
11 private CANJaguar frontLeft, frontRight, rearLeft, rearRight;
12 private Encoder leftEncoder, rightEncoder;
f11ce98e 13
e3bfff96
KZ
14 public DriveTrain() {
15 frontLeft = new CANJaguar(RobotMap.DRIVE_FRONT_LEFT);
16 frontRight = new CANJaguar(RobotMap.DRIVE_FRONT_RIGHT);
17 rearLeft = new CANJaguar(RobotMap.DRIVE_REAR_LEFT);
18 rearRight = new CANJaguar(RobotMap.DRIVE_REAR_RIGHT);
19 leftEncoder = new Encoder(RobotMap.DRIVE_LEFT_A, RobotMap.DRIVE_LEFT_B,
20 false, EncodingType.k4X);
21 rightEncoder = new Encoder(RobotMap.DRIVE_RIGHT_A, RobotMap.DRIVE_RIGHT_B,
22 false, EncodingType.k4X);
23 leftEncoder.setDistancePerPulse(RobotMap.DISTANCE_PER_PULSE);
24 rightEncoder.setDistancePerPulse(RobotMap.DISTANCE_PER_PULSE);
25 }
f11ce98e 26
e3bfff96
KZ
27 public void resetEncoders() {
28 leftEncoder.reset();
29 rightEncoder.reset();
30 }
f11ce98e 31
e3bfff96
KZ
32 public double getRightSpeed() {
33 // Returns in per second
34 return rightEncoder.getRate();
35 }
f11ce98e 36
e3bfff96
KZ
37 public double getLeftSpeed() {
38 return leftEncoder.getRate();
39 }
f11ce98e 40
e3bfff96
KZ
41 public double getRightDistance() {
42 // Returns distance in in
43 return rightEncoder.getDistance();
44 }
f11ce98e 45
e3bfff96
KZ
46 public double getLeftDistance() {
47 // Returns distance in in
48 return leftEncoder.getDistance();
49 }
f11ce98e 50
e3bfff96
KZ
51 public void setMotorSpeeds(double leftSpeed, double rightSpeed) {
52 if (Math.abs(leftSpeed) < RobotMap.DRIVE_DEAD_ZONE) {
53 leftSpeed = 0;
f11ce98e 54 }
e3bfff96
KZ
55 if (Math.abs(rightSpeed) < RobotMap.DRIVE_DEAD_ZONE) {
56 rightSpeed = 0;
57 }
58 this.frontLeft.set(leftSpeed);
59 this.frontRight.set(-rightSpeed);
60 this.rearLeft.set(leftSpeed);
61 this.rearRight.set(-rightSpeed);
62 }
f11ce98e 63
e3bfff96
KZ
64 public void arcadeDrive(double yVal, double twist) {
65 if (yVal < 0 && Math.abs(yVal) < 0.1125) {
66 yVal = 0;
67 } else if (yVal > 0 && Math.abs(yVal) < 0.25) {
68 yVal = 0;
69 } else if (yVal > 0) {
70 yVal -= 0.25;
71 } else if (yVal < 0) {
72 yVal += 0.15;
73 }
74 if (Math.abs(twist) < RobotMap.DRIVE_DEAD_ZONE) {
75 twist = 0;
f11ce98e
KZ
76 }
77
e3bfff96
KZ
78 double leftMotorSpeed;
79 double rightMotorSpeed;
80 // adjust the sensitivity (yVal+rootof (yval)) / 2
81 yVal = (yVal + Math.signum(yVal) * Math.sqrt(Math.abs(yVal))) / 2;
82 // adjust the sensitivity (twist+rootof (twist)) / 2
83 twist = (twist + Math.signum(twist) * Math.sqrt(Math.abs(twist))) / 2;
84 if (yVal > 0) {
85 if (twist > 0) {
86 leftMotorSpeed = yVal - twist;
87 rightMotorSpeed = Math.max(yVal, twist);
88 } else {
89 leftMotorSpeed = Math.max(yVal, -twist);
90 rightMotorSpeed = yVal + twist;
91 }
92 } else {
93 if (twist > 0.0) {
94 leftMotorSpeed = -Math.max(-yVal, twist);
95 rightMotorSpeed = yVal + twist;
96 } else {
97 leftMotorSpeed = yVal - twist;
98 rightMotorSpeed = -Math.max(-yVal, -twist);
99 }
f11ce98e 100 }
e3bfff96
KZ
101 setMotorSpeeds(leftMotorSpeed, rightMotorSpeed);
102 }
103
104 @Override
105 protected void initDefaultCommand() {
106 }
f11ce98e 107}