Commit | Line | Data |
---|---|---|
c9ab1206 KZ |
1 | package org.usfirst.frc3501.RiceCatRobot.commands; |
2 | ||
4b8a525f | 3 | import org.usfirst.frc3501.RiceCatRobot.robot.Robot; |
ba4d69ce | 4 | import org.usfirst.frc3501.RiceCatRobot.subsystems.DriveTrain; |
c9ab1206 KZ |
5 | |
6 | import edu.wpi.first.wpilibj.command.Command; | |
7 | ||
8 | public class MoveDistance extends Command { | |
9 | ||
ba4d69ce KZ |
10 | double distance, minSpeed, maxSpeed; |
11 | ||
12 | public MoveDistance(double distance, double minSpeed, double maxSpeed) { | |
c9ab1206 KZ |
13 | requires(Robot.driveTrain); |
14 | this.distance = distance; | |
ba4d69ce KZ |
15 | this.minSpeed = minSpeed; |
16 | this.maxSpeed = maxSpeed; | |
c9ab1206 | 17 | } |
ba4d69ce KZ |
18 | |
19 | protected void initialize() { | |
20 | Robot.driveTrain.resetEncoders(); | |
c9ab1206 KZ |
21 | } |
22 | ||
23 | @Override | |
24 | protected void execute() { | |
ba4d69ce KZ |
25 | double speed = 4 * (minSpeed - maxSpeed) * |
26 | Math.pow((Robot.driveTrain.getAverageSpeed() / distance - 0.5), 2) | |
27 | + maxSpeed; | |
28 | Robot.driveTrain.setMotorSpeeds(speed, speed); | |
c9ab1206 KZ |
29 | } |
30 | ||
31 | @Override | |
32 | protected boolean isFinished() { | |
ba4d69ce KZ |
33 | if (Robot.driveTrain.getLeftDistance() > distance |
34 | && Robot.driveTrain.getRightDistance() > distance) | |
35 | return true; | |
c9ab1206 KZ |
36 | return false; |
37 | } | |
ba4d69ce | 38 | |
c9ab1206 KZ |
39 | @Override |
40 | protected void end() { | |
ba4d69ce | 41 | Robot.driveTrain.stop(); |
c9ab1206 KZ |
42 | } |
43 | ||
44 | @Override | |
45 | protected void interrupted() { | |
ba4d69ce | 46 | end(); |
c9ab1206 KZ |
47 | } |
48 | } |