Skip to content
This repository was archived by the owner on Sep 14, 2019. It is now read-only.

Commit 77a42c8

Browse files
committed
Simple constructor for AMT, make math readable
1 parent e774c5f commit 77a42c8

2 files changed

Lines changed: 50 additions & 15 deletions

File tree

Robot2018/src/org/usfirst/frc/team199/Robot2018/commands/AutoMoveTo.java

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.usfirst.frc.team199.Robot2018.commands;
22

3+
import org.usfirst.frc.team199.Robot2018.Robot;
34
import org.usfirst.frc.team199.Robot2018.SmartDashboardInterface;
45
import org.usfirst.frc.team199.Robot2018.autonomous.AutoUtils;
56
import org.usfirst.frc.team199.Robot2018.subsystems.DrivetrainInterface;
@@ -23,18 +24,53 @@ public AutoMoveTo(String[] args, DrivetrainInterface dt, SmartDashboardInterface
2324
for (String arg : args) {
2425
if (AutoUtils.isDouble(arg)) {
2526
rotation = Double.valueOf(arg);
26-
addSequential(new PIDTurn(rotation - AutoUtils.position.getRot(), dt, sd, pidMoveSrc));
27+
double relrotation = rotation - AutoUtils.position.getRot();
28+
addSequential(new PIDTurn(relrotation, dt, sd, pidMoveSrc));
2729
AutoUtils.position.setRot(rotation);
2830
} else if (AutoUtils.isPoint(arg)) {
2931
point = AutoUtils.parsePoint(arg);
30-
addSequential(new PIDTurn(Math.toDegrees(
31-
Math.atan((point[0] - AutoUtils.position.getX()) / (point[1] - AutoUtils.position.getY()))
32-
- AutoUtils.position.getRot()),
33-
dt, sd, pidMoveSrc));
34-
addSequential(new PIDMove(
35-
Math.sqrt(((point[0] - AutoUtils.position.getX()) * (point[0] - AutoUtils.position.getX())
36-
+ ((point[1] - AutoUtils.position.getY()) * (point[1] - AutoUtils.position.getY())))),
37-
dt, sd, pidMoveSrc));
32+
double deltaX = point[0] - AutoUtils.position.getX();
33+
double deltaY = point[1] - AutoUtils.position.getY();
34+
double atan = Math.toDegrees(Math.atan(deltaX / deltaY));
35+
double relrotation = atan - AutoUtils.position.getRot();
36+
addSequential(new PIDTurn(relrotation, dt, sd, pidMoveSrc));
37+
double dX2 = deltaX * deltaX;
38+
double dY2 = deltaY * deltaY;
39+
double distance = Math.sqrt(dX2 + dY2);
40+
addSequential(new PIDMove(distance, dt, sd, pidMoveSrc));
41+
double x = AutoUtils.position.getX();
42+
double y = AutoUtils.position.getY();
43+
AutoUtils.position.setX(point[0]);
44+
AutoUtils.position.setY(point[1]);
45+
AutoUtils.position.setRot(Math.toDegrees(Math.atan((point[0] - x) / (point[1] - y))));
46+
} else {
47+
throw new IllegalArgumentException();
48+
}
49+
}
50+
}
51+
52+
public AutoMoveTo(String[] args) {
53+
// requires(Drivetrain);
54+
double rotation;
55+
double[] point = { 0, 0 };
56+
for (String arg : args) {
57+
if (AutoUtils.isDouble(arg)) {
58+
rotation = Double.valueOf(arg);
59+
double relrotation = rotation - AutoUtils.position.getRot();
60+
addSequential(new PIDTurn(relrotation, Robot.dt, Robot.sd, Robot.dt.getDistEncAvg()));
61+
AutoUtils.position.setRot(rotation);
62+
} else if (AutoUtils.isPoint(arg)) {
63+
point = AutoUtils.parsePoint(arg);
64+
double deltaX = point[0] - AutoUtils.position.getX();
65+
double deltaY = point[1] - AutoUtils.position.getY();
66+
double atan = Math.toDegrees(Math.atan(deltaX / deltaY));
67+
double relrotation = atan - AutoUtils.position.getRot();
68+
addSequential(new PIDTurn(relrotation, Robot.dt, Robot.sd, Robot.dt.getDistEncAvg()));
69+
70+
double dX2 = deltaX * deltaX;
71+
double dY2 = deltaY * deltaY;
72+
double distance = Math.sqrt(dX2 + dY2);
73+
addSequential(new PIDMove(distance, Robot.dt, Robot.sd, Robot.dt.getDistEncAvg()));
3874
double x = AutoUtils.position.getX();
3975
double y = AutoUtils.position.getY();
4076
AutoUtils.position.setX(point[0]);

Robot2018/src/org/usfirst/frc/team199/Robot2018/commands/RunScript.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import org.usfirst.frc.team199.Robot2018.Robot;
66
import org.usfirst.frc.team199.Robot2018.autonomous.AutoUtils;
7-
import org.usfirst.frc.team199.Robot2018.autonomous.PIDSourceAverage;
87

98
import edu.wpi.first.wpilibj.command.CommandGroup;
109
import edu.wpi.first.wpilibj.command.WaitCommand;
@@ -23,19 +22,19 @@ public RunScript(String scriptName) {
2322

2423
switch (cmdName) {
2524
case "moveto":
26-
addSequential(new AutoMoveTo(cmdArgs.split(" "), Robot.dt, Robot.sd, new PIDSourceAverage(null, null)));
25+
addSequential(new AutoMoveTo(cmdArgs.split(" ")));
2726
break;
2827
case "turn":
2928
double rotation = Double.parseDouble(cmdArgs);
3029
addSequential(new PIDTurn(rotation, Robot.dt, Robot.sd, Robot.dt.getGyro()));
31-
AutoUtils.setRot(rotation);
30+
AutoUtils.position.setRot(rotation);
3231
break;
3332
case "move":
3433
double distance = Double.parseDouble(cmdArgs);
3534

36-
addSequential(new PIDMove(distance, Robot.dt, Robot.sd, new PIDSourceAverage(null, null)));
37-
AutoUtils.setX(distance * Math.sin(Math.toRadians(AutoUtils.getRot())));
38-
AutoUtils.setY(distance * Math.cos(Math.toRadians(AutoUtils.getRot())));
35+
addSequential(new PIDMove(distance, Robot.dt, Robot.sd, Robot.dt.getDistEncAvg()));
36+
AutoUtils.position.setX(distance * Math.sin(Math.toRadians(AutoUtils.position.getRot())));
37+
AutoUtils.position.setY(distance * Math.cos(Math.toRadians(AutoUtils.position.getRot())));
3938
break;
4039
case "switch":
4140
addSequential(new EjectToSwitch());

0 commit comments

Comments
 (0)