From aa35b191feea2233931f4ddd102032ef8fcad58e Mon Sep 17 00:00:00 2001 From: maxwell-tang <43733842+maxwell-tang@users.noreply.github.com> Date: Tue, 18 Feb 2020 20:37:03 -0500 Subject: [PATCH 1/8] created a action group for autonomous mode --- .../java/frc/robot/autonomous/Actions.java | 99 ++++++++++++------- .../robot/autonomous/MatchConfiguration.java | 54 +++++----- 2 files changed, 89 insertions(+), 64 deletions(-) diff --git a/src/main/java/frc/robot/autonomous/Actions.java b/src/main/java/frc/robot/autonomous/Actions.java index 2b4a950b..08e9f9bb 100644 --- a/src/main/java/frc/robot/autonomous/Actions.java +++ b/src/main/java/frc/robot/autonomous/Actions.java @@ -21,47 +21,45 @@ public class Actions { private static GamePieceController gamePieceController = GamePieceController.getInstance(); private static double mirrorTurns = 1.0; - + public static void startOnLeft() { mirrorTurns = -1.0; } - + public static void startOnRight() { mirrorTurns = 1.0; } - + public static void startInCenter() { mirrorTurns = 1.0; } - + public static final Action nothing() { String actionText = "Do Nothing"; - return new Action(actionText, - () -> drive.isStopped(), - () -> drive.arcadeDrive(0, 0, false)); + return new Action(actionText, () -> drive.isStopped(), () -> drive.arcadeDrive(0, 0, false)); + } + + public static final Action drive(double duration) { + String actionText = "Do Nothing"; + return new Action(actionText, new ActionGroup.Duration(duration), () -> drive.arcadeDrive(1, 0, false)); } public static final Action Shoot() { String actionText = "shoot"; - + IndexerAL indexer = IndexerAL.getInstance(); - return new Action(actionText, - () -> indexer.isBallInChamber(), + return new Action(actionText, () -> indexer.isBallInChamber(), () -> gamePieceController.setAutomousFireWhenReady(true)); } public static Action wait(double duration) { String actionText = "Do Nothing"; - return new Action(actionText, - new ActionGroup.Duration(duration), - () -> drive.arcadeDrive(0, 0)); + return new Action(actionText, new ActionGroup.Duration(duration), () -> drive.arcadeDrive(0, 0)); } public static final Action nothingForever() { String actionText = "Do Nothing"; - return new Action(actionText, - () -> false, - () -> drive.moveLinearFeet(0)); + return new Action(actionText, () -> false, () -> drive.moveLinearFeet(0)); } public static ActionGroup doNothing() { @@ -71,16 +69,11 @@ public static ActionGroup doNothing() { } public static Action print(String message) { - return new Action( - "Print custom message", - new ActionGroup.RunOnce(() -> LOGGER.info(message))); + return new Action("Print custom message", new ActionGroup.RunOnce(() -> LOGGER.info(message))); } - public static Action zeroDistance() { - return new Action( - "Zeroing the distance", - new ActionGroup.RunOnce(() -> drive.zero())); + return new Action("Zeroing the distance", new ActionGroup.RunOnce(() -> drive.zero())); } /** @@ -90,22 +83,20 @@ public static Action zeroDistance() { */ public static Action moveDistanceForward(double distance) { String actionText = "Move forward " + distance + " feet"; - //TODO determine the mult values - double timeAmt = (distance - 0.112)/10.3596; - return new Action(actionText, - new ActionGroup.Duration(timeAmt), - () -> drive.arcadeDrive(0.8,0)); + // TODO determine the mult values + double timeAmt = (distance - 0.112) / 10.3596; + return new Action(actionText, new ActionGroup.Duration(timeAmt), () -> drive.arcadeDrive(0.8, 0)); } /** * - * @param rotationInDegrees Rotates robot in radians. Enter rotation amount in Degrees. + * @param rotationInDegrees Rotates robot in radians. Enter rotation amount in + * Degrees. * */ public static Action moveturn(double rotationInDegrees) { String actionText = "Rotate " + rotationInDegrees + " degrees."; - return new Action(actionText, - new ActionGroup.ReachAngle(rotationInDegrees), + return new Action(actionText, new ActionGroup.ReachAngle(rotationInDegrees), // reach distance was here instead of reachAngle () -> drive.rotateByAngle(rotationInDegrees)); } @@ -113,8 +104,7 @@ public static Action moveturn(double rotationInDegrees) { public static boolean moveDistanceComplete(double distance) { double distanceMoved = drive.absoluteDistanceMoved(); - LOGGER.debug("Distances - Target: {} Moved: {}", - df.format(Math.abs(distance)), df.format(distanceMoved)); + LOGGER.debug("Distances - Target: {} Moved: {}", df.format(Math.abs(distance)), df.format(distanceMoved)); if (distanceMoved >= (Math.abs(distance) - RobotMap.POSITION_ALLOWED_ERROR)) { LOGGER.info("Finished moving {} feet", df.format(distanceMoved)); return true; @@ -124,6 +114,10 @@ public static boolean moveDistanceComplete(double distance) { } } + /** + * + * @param distance distance to move in feet + */ public static ActionGroup move(double distance) { String actionGroupText = "Move forward " + distance + " feet"; ActionGroup mode = new ActionGroup(actionGroupText); @@ -132,6 +126,11 @@ public static ActionGroup move(double distance) { return mode; } + /** + * + * @param degrees enter positive degrees for left turn and enter negative + * degrees for right turn. + */ public static ActionGroup turn(double degrees) { String actionGroupText = "Turn " + degrees + " degrees"; ActionGroup mode = new ActionGroup(actionGroupText); @@ -161,7 +160,6 @@ public static ActionGroup shootGroup() { return mode; } - public static ActionGroup crossAutoLine() { String actionGroupText = "Go straight to cross the auto line."; ActionGroup mode = new ActionGroup(actionGroupText); @@ -169,7 +167,16 @@ public static ActionGroup crossAutoLine() { mode.addActions(move(10.0)); return mode; } - + + public static Action getAngleFromTarget() { + String actionText = "sense angle from target"; + return new Action(actionText, // + () -> true, //if an angle has been sensed + () -> { + }//sense for an angle + ); + } + // TEST ACTIONS public static ActionGroup fourFootSquare() { @@ -186,4 +193,26 @@ public static ActionGroup fourFootSquare() { return mode; } + // + public static ActionGroup collectAndShoot() { + // stuff + String actionGroupText = "align with trench and go back to score"; + ActionGroup mode = new ActionGroup(actionGroupText); + mode.addActions(move(11)); + mode.addActions(turn(90)); + // TODO create this + mode.addAction(getAngleFromTarget()); + mode.addActions(turn(-90)); + // mode.addActions(modeForwardByTheAmountINeedPlus5.66Feet()); TODO + //formula is tan(theta)*10.16+5.66 + mode.addActions(turn(-90)); + mode.addActions(move(16.06)); + mode.addActions(turn(-160.59)); + mode.addActions(move(17.03)); + mode.addActions(turn(-19.41)); + mode.addActions(shootGroup()); + + return mode; + } + } diff --git a/src/main/java/frc/robot/autonomous/MatchConfiguration.java b/src/main/java/frc/robot/autonomous/MatchConfiguration.java index 8815314a..9947d4ec 100644 --- a/src/main/java/frc/robot/autonomous/MatchConfiguration.java +++ b/src/main/java/frc/robot/autonomous/MatchConfiguration.java @@ -10,7 +10,7 @@ import org.apache.logging.log4j.Logger; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -/** +/** * This class determines the robots position during the beginning of the game. * */ @@ -18,39 +18,34 @@ public class MatchConfiguration { private static MatchConfiguration instance; - private static final Logger LOGGER - = RobotLogManager.getMainLogger(MatchConfiguration.class.getName()); + private static final Logger LOGGER = RobotLogManager.getMainLogger(MatchConfiguration.class.getName()); public enum TeamColor { - UNKNOWN, - RED, - BLUE; + UNKNOWN, RED, BLUE; } public enum Side { - UNKNOWN, - LEFT, - RIGHT; + UNKNOWN, LEFT, RIGHT; } private TeamColor teamColor; - private String autoMode = "None"; + private String autoMode = "None"; private ActionGroup autonomous; - private String[] autolist= {"None","Shoot Basic"}; + private String[] autolist = { "None", "Shoot Basic", "Collect And Shoot" }; private SendableChooser chooser = new SendableChooser(); private MatchConfiguration() { teamColor = TeamColor.UNKNOWN; - for(String s : autolist) { - chooser.addOption(s,s); + for (String s : autolist) { + chooser.addOption(s, s); } - SmartDashboard.putData("Auto Chooser", chooser); + SmartDashboard.putData("Auto Chooser", chooser); } @@ -62,7 +57,7 @@ public static MatchConfiguration getInstance() { } public void setAllianceColor() { - Alliance color; + Alliance color; color = DriverStation.getInstance().getAlliance(); @@ -75,7 +70,7 @@ public void setAllianceColor() { } else { LOGGER.info("Alliance not found"); teamColor = TeamColor.UNKNOWN; - } + } } public void setAutoModeAndStartPosition() { @@ -85,32 +80,33 @@ public void setAutoModeAndStartPosition() { public ActionGroup AutoDecisionTree() { autonomous = Actions.doNothing(); - - // if (autoMode.startsWith("Left")) { - // Actions.startOnLeft(); - // } else if (autoMode.startsWith("Right")) { - // Actions.startOnRight(); - // } else { - // Actions.startInCenter(); - // } + // if (autoMode.startsWith("Left")) { + // Actions.startOnLeft(); + // } else if (autoMode.startsWith("Right")) { + // Actions.startOnRight(); + // } else { + // Actions.startInCenter(); + // } - switch(autoMode) { + switch (autoMode) { case "None": autonomous = Actions.doNothing(); - break; + break; case "Shoot Basic": autonomous = Actions.shootGroup(); break; + case "Collect And Shoot": + autonomous = Actions.collectAndShoot(); + break; default: - Actions.doNothing(); + Actions.doNothing(); } autonomous.enable(); return autonomous; - } - + } public void load() { LOGGER.debug("Loading game info."); From a1ab52b56e251694290a3ebb752f02e9bb16d38c Mon Sep 17 00:00:00 2001 From: maxwell-tang <43733842+maxwell-tang@users.noreply.github.com> Date: Sat, 22 Feb 2020 14:23:26 -0500 Subject: [PATCH 2/8] added 3 autonomous modes --- .../java/frc/robot/autonomous/Actions.java | 40 ++++++++++++++++--- .../robot/autonomous/MatchConfiguration.java | 11 ++++- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/main/java/frc/robot/autonomous/Actions.java b/src/main/java/frc/robot/autonomous/Actions.java index 08e9f9bb..95483656 100644 --- a/src/main/java/frc/robot/autonomous/Actions.java +++ b/src/main/java/frc/robot/autonomous/Actions.java @@ -121,7 +121,6 @@ public static boolean moveDistanceComplete(double distance) { public static ActionGroup move(double distance) { String actionGroupText = "Move forward " + distance + " feet"; ActionGroup mode = new ActionGroup(actionGroupText); - mode.addAction(zeroDistance()); mode.addAction(moveDistanceForward(distance)); return mode; } @@ -171,9 +170,9 @@ public static ActionGroup crossAutoLine() { public static Action getAngleFromTarget() { String actionText = "sense angle from target"; return new Action(actionText, // - () -> true, //if an angle has been sensed + () -> true, // if an angle has been sensed () -> { - }//sense for an angle + }// sense for an angle ); } @@ -204,14 +203,45 @@ public static ActionGroup collectAndShoot() { mode.addAction(getAngleFromTarget()); mode.addActions(turn(-90)); // mode.addActions(modeForwardByTheAmountINeedPlus5.66Feet()); TODO - //formula is tan(theta)*10.16+5.66 + // formula is tan(theta)*10.16+5.66 mode.addActions(turn(-90)); mode.addActions(move(16.06)); mode.addActions(turn(-160.59)); mode.addActions(move(17.03)); mode.addActions(turn(-19.41)); - mode.addActions(shootGroup()); + mode.addAction(Shoot()); + + return mode; + } + public static ActionGroup shootLB() { + // stuff + String actionGroupText = "shoot from loading bay"; + ActionGroup mode = new ActionGroup(actionGroupText); + mode.addActions(turn(-62.78)); + mode.addActions(move(6.56)); + mode.addActions(turn(5.78)); + mode.addAction(Shoot()); + + + return mode; + } + + public static ActionGroup shootPP() { + // stuff + String actionGroupText = "shoot from power port"; + ActionGroup mode = new ActionGroup(actionGroupText); + mode.addActions(move(8)); + mode.addAction(Shoot()); + return mode; + } + + public static ActionGroup shootPS1() { + // stuff + String actionGroupText = "shoot from player station 1"; + ActionGroup mode = new ActionGroup(actionGroupText); + mode.addActions(turn(28.43)); + move(4.5); return mode; } diff --git a/src/main/java/frc/robot/autonomous/MatchConfiguration.java b/src/main/java/frc/robot/autonomous/MatchConfiguration.java index 9947d4ec..401568cd 100644 --- a/src/main/java/frc/robot/autonomous/MatchConfiguration.java +++ b/src/main/java/frc/robot/autonomous/MatchConfiguration.java @@ -34,7 +34,7 @@ public enum Side { private ActionGroup autonomous; - private String[] autolist = { "None", "Shoot Basic", "Collect And Shoot" }; + private String[] autolist = { "None", "Shoot Basic", "Collect And Shoot", "Shoot from LB", "Shoot From PP", "Shoot From PS1"}; private SendableChooser chooser = new SendableChooser(); @@ -99,6 +99,15 @@ public ActionGroup AutoDecisionTree() { case "Collect And Shoot": autonomous = Actions.collectAndShoot(); break; + case "Shoot from LB": + autonomous = Actions.shootLB(); + break; + case "Shoot From PP": + autonomous = Actions.shootPP(); + break; + case "Shoot From PS1": + autonomous = Actions.shootPS1(); + break; default: Actions.doNothing(); } From 42909142b5f73f422243ee2b0ed57e54202ebf98 Mon Sep 17 00:00:00 2001 From: maxwell-tang <43733842+maxwell-tang@users.noreply.github.com> Date: Sat, 22 Feb 2020 15:24:46 -0500 Subject: [PATCH 3/8] added arc to actions --- src/main/java/frc/robot/autonomous/Actions.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/frc/robot/autonomous/Actions.java b/src/main/java/frc/robot/autonomous/Actions.java index 95483656..b93cf747 100644 --- a/src/main/java/frc/robot/autonomous/Actions.java +++ b/src/main/java/frc/robot/autonomous/Actions.java @@ -87,8 +87,22 @@ public static Action moveDistanceForward(double distance) { double timeAmt = (distance - 0.112) / 10.3596; return new Action(actionText, new ActionGroup.Duration(timeAmt), () -> drive.arcadeDrive(0.8, 0)); } + /** + * + * @param distance moves robot in feet. + * @param rotation enter positive degrees for left turn and enter negative degrees for right turn. + * @return + */ + public static Action arc(double speed, double rotation) { + String actionText = "Move forward " + speed + " feet"; + // TODO determine the mult values + ActionGroup.MultiCondition condition = new ActionGroup.MultiCondition(new ActionGroup.ReachAngle(rotation),new ActionGroup.ReachDistance(speed)); + + return new Action(actionText, condition, () -> drive.arcadeDrive(speed, rotation)); + } /** + * * * @param rotationInDegrees Rotates robot in radians. Enter rotation amount in * Degrees. From ae94552ea8f6be6e6b1519f1f64ea911c434d041 Mon Sep 17 00:00:00 2001 From: maxwell-tang <43733842+maxwell-tang@users.noreply.github.com> Date: Sat, 22 Feb 2020 17:10:20 -0500 Subject: [PATCH 4/8] changed autonomous modes --- .../java/frc/robot/autonomous/Actions.java | 34 +++++++++++++++---- .../robot/autonomous/MatchConfiguration.java | 4 ++- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/main/java/frc/robot/autonomous/Actions.java b/src/main/java/frc/robot/autonomous/Actions.java index b93cf747..a59b1d24 100644 --- a/src/main/java/frc/robot/autonomous/Actions.java +++ b/src/main/java/frc/robot/autonomous/Actions.java @@ -87,16 +87,19 @@ public static Action moveDistanceForward(double distance) { double timeAmt = (distance - 0.112) / 10.3596; return new Action(actionText, new ActionGroup.Duration(timeAmt), () -> drive.arcadeDrive(0.8, 0)); } + /** * * @param distance moves robot in feet. - * @param rotation enter positive degrees for left turn and enter negative degrees for right turn. + * @param rotation enter positive degrees for left turn and enter negative + * degrees for right turn. * @return */ public static Action arc(double speed, double rotation) { String actionText = "Move forward " + speed + " feet"; // TODO determine the mult values - ActionGroup.MultiCondition condition = new ActionGroup.MultiCondition(new ActionGroup.ReachAngle(rotation),new ActionGroup.ReachDistance(speed)); + ActionGroup.MultiCondition condition = new ActionGroup.MultiCondition(new ActionGroup.ReachAngle(rotation), + new ActionGroup.ReachDistance(speed)); return new Action(actionText, condition, () -> drive.arcadeDrive(speed, rotation)); } @@ -223,6 +226,7 @@ public static ActionGroup collectAndShoot() { mode.addActions(turn(-160.59)); mode.addActions(move(17.03)); mode.addActions(turn(-19.41)); + // TODO make these align ans shoot mode.addAction(Shoot()); return mode; @@ -232,12 +236,15 @@ public static ActionGroup shootLB() { // stuff String actionGroupText = "shoot from loading bay"; ActionGroup mode = new ActionGroup(actionGroupText); + // TODO make these based off of camera readings mode.addActions(turn(-62.78)); mode.addActions(move(6.56)); mode.addActions(turn(5.78)); + // TODO make these align and shoot mode.addAction(Shoot()); - - + // move out of the way after shot + mode.addActions(turn(57.4)); + mode.addActions(move(-10)); return mode; } @@ -245,8 +252,10 @@ public static ActionGroup shootPP() { // stuff String actionGroupText = "shoot from power port"; ActionGroup mode = new ActionGroup(actionGroupText); - mode.addActions(move(8)); + // TODO make these align and shoot mode.addAction(Shoot()); + // move back after shot + mode.addActions(move(-10)); return mode; } @@ -255,7 +264,20 @@ public static ActionGroup shootPS1() { String actionGroupText = "shoot from player station 1"; ActionGroup mode = new ActionGroup(actionGroupText); mode.addActions(turn(28.43)); - move(4.5); + // TODO make these align and shoot + mode.addAction(Shoot()); + mode.addActions(turn(-28.43)); + // move out of the way after shot + mode.addActions(move(-10)); + + return mode; + } + + public static ActionGroup noShoot() { + // stuff + String actionGroupText = "shoot from player station 1"; + ActionGroup mode = new ActionGroup(actionGroupText); + mode.addActions(move(-10)); return mode; } diff --git a/src/main/java/frc/robot/autonomous/MatchConfiguration.java b/src/main/java/frc/robot/autonomous/MatchConfiguration.java index 401568cd..10b3637f 100644 --- a/src/main/java/frc/robot/autonomous/MatchConfiguration.java +++ b/src/main/java/frc/robot/autonomous/MatchConfiguration.java @@ -34,7 +34,7 @@ public enum Side { private ActionGroup autonomous; - private String[] autolist = { "None", "Shoot Basic", "Collect And Shoot", "Shoot from LB", "Shoot From PP", "Shoot From PS1"}; + private String[] autolist = { "None", "Shoot Basic", "Collect And Shoot", "Shoot from LB", "Shoot From PP", "Shoot From PS1", "Get Out Of The Way"}; private SendableChooser chooser = new SendableChooser(); @@ -108,6 +108,8 @@ public ActionGroup AutoDecisionTree() { case "Shoot From PS1": autonomous = Actions.shootPS1(); break; + case "Get Out Of The Way": + autonomous = Actions.noShoot(); default: Actions.doNothing(); } From 1a5e4fc0e4a341d71709e4d681ae1274bc52e1b2 Mon Sep 17 00:00:00 2001 From: maxwell-tang <43733842+maxwell-tang@users.noreply.github.com> Date: Sat, 22 Feb 2020 20:44:59 -0500 Subject: [PATCH 5/8] added new auto modes(incomplete) incomplete --- .../java/frc/robot/autonomous/Actions.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/main/java/frc/robot/autonomous/Actions.java b/src/main/java/frc/robot/autonomous/Actions.java index a59b1d24..8ef90f3c 100644 --- a/src/main/java/frc/robot/autonomous/Actions.java +++ b/src/main/java/frc/robot/autonomous/Actions.java @@ -193,6 +193,15 @@ public static Action getAngleFromTarget() { ); } + public static ActionGroup aimAndShoot() { + String actionGroupText = "aims at the target and shoot"; + double thing; + ActionGroup mode = new ActionGroup(actionGroupText); + + return mode; + + } + // TEST ACTIONS public static ActionGroup fourFootSquare() { @@ -232,6 +241,10 @@ public static ActionGroup collectAndShoot() { return mode; } + /** + * turns right, moves closer to the power port and shoots at the port. Then it + * turns and moves pas the line and out of the way + */ public static ActionGroup shootLB() { // stuff String actionGroupText = "shoot from loading bay"; @@ -248,6 +261,9 @@ public static ActionGroup shootLB() { return mode; } + /** + * shoots and moves back out of the way + */ public static ActionGroup shootPP() { // stuff String actionGroupText = "shoot from power port"; @@ -259,6 +275,9 @@ public static ActionGroup shootPP() { return mode; } + /** + * turns a little left anf shoots, then turns back and drives back + */ public static ActionGroup shootPS1() { // stuff String actionGroupText = "shoot from player station 1"; @@ -273,6 +292,10 @@ public static ActionGroup shootPS1() { return mode; } + /** + * if the robots shooter is broken, then it moves back out of the way + * immediately + */ public static ActionGroup noShoot() { // stuff String actionGroupText = "shoot from player station 1"; @@ -281,4 +304,33 @@ public static ActionGroup noShoot() { return mode; } + // TODO change names + public static ActionGroup leftSide() { + String actionGroupText = "aims at the target and shoot"; + double thing; + ActionGroup mode = new ActionGroup(actionGroupText); + mode.addAction(Shoot()); + mode.addActions(turn(-114.79)); + mode.addActions(move(9)/* suck TODO */); + mode.addActions(move(-4.5)); + mode.addActions(turn(-46.4)); + mode.addAction(Shoot()); + return mode; + } + + public static ActionGroup rightSide(){ + String actionGroupText = "aims at the target and shoot"; + ActionGroup mode = new ActionGroup(actionGroupText); + mode.addActions(Shoot()); + mode.addActions(turn(/*TODO to the left*/)); + mode.addActions(move(/*TODO forward and suck simultaneoulsy*/)); + mode.addActions(turn(-180)); + mode.addActions(move(/*TODO forward*/)); + mode.adddActions(turn(/*TODO left*/)); + mode.addAction(Shoot()); + mode. + + return mode; + } + } From 647108d97b634977bcebf02fc26615b2a9181f40 Mon Sep 17 00:00:00 2001 From: maxwell-tang <43733842+maxwell-tang@users.noreply.github.com> Date: Wed, 26 Feb 2020 18:41:53 -0500 Subject: [PATCH 6/8] adds 2 modes: left and right --- .../java/frc/robot/autonomous/Actions.java | 43 +++++++++++++------ .../robot/autonomous/MatchConfiguration.java | 15 ++++--- .../gamepieces/AbstractLayers/IntakeAL.java | 2 +- .../robot/gamepieces/States/IntakeState.java | 4 +- 4 files changed, 42 insertions(+), 22 deletions(-) diff --git a/src/main/java/frc/robot/autonomous/Actions.java b/src/main/java/frc/robot/autonomous/Actions.java index 8ef90f3c..7785cb7b 100644 --- a/src/main/java/frc/robot/autonomous/Actions.java +++ b/src/main/java/frc/robot/autonomous/Actions.java @@ -5,6 +5,7 @@ import frc.robot.gamepieces.GamePieceController; import frc.robot.logging.RobotLogManager; import frc.robot.gamepieces.AbstractLayers.IndexerAL; +import frc.robot.gamepieces.AbstractLayers.IntakeAL; import java.text.DecimalFormat; @@ -88,6 +89,23 @@ public static Action moveDistanceForward(double distance) { return new Action(actionText, new ActionGroup.Duration(timeAmt), () -> drive.arcadeDrive(0.8, 0)); } + /** + * + * @param distance moves robot in feet. + * @return + */ + public static ActionGroup moveDistanceForwardAndGather(double distance) { + String actionGroupText = "Move forward " + distance + " feet"; + ActionGroup mode = new ActionGroup(actionGroupText); + // TODO determine the mult values + double timeAmt = (distance - 0.112) / 10.3596; + mode.addAction( new Action("", new ActionGroup.Duration(timeAmt), new ActionGroup.ConcurrentActions( + () -> drive.arcadeDrive(0.8, 0), () -> IntakeAL.callForward()))); + //TODO i dont know if this just does this once and stops; + mode.addAction(new Action("",()->false,()->IntakeAL.callRollerStop())); + return mode; + } + /** * * @param distance moves robot in feet. @@ -276,7 +294,7 @@ public static ActionGroup shootPP() { } /** - * turns a little left anf shoots, then turns back and drives back + * turns a little left and shoots, then turns back and drives back */ public static ActionGroup shootPS1() { // stuff @@ -310,26 +328,23 @@ public static ActionGroup leftSide() { double thing; ActionGroup mode = new ActionGroup(actionGroupText); mode.addAction(Shoot()); - mode.addActions(turn(-114.79)); - mode.addActions(move(9)/* suck TODO */); - mode.addActions(move(-4.5)); - mode.addActions(turn(-46.4)); + mode.addActions(turn(-150)); + mode.addActions(moveDistanceForwardAndGather(16)/* suck TODO */); + mode.addActions(move(-9)); + mode.addActions(turn(-160)); mode.addAction(Shoot()); return mode; } - public static ActionGroup rightSide(){ + public static ActionGroup rightSide() { String actionGroupText = "aims at the target and shoot"; ActionGroup mode = new ActionGroup(actionGroupText); - mode.addActions(Shoot()); - mode.addActions(turn(/*TODO to the left*/)); - mode.addActions(move(/*TODO forward and suck simultaneoulsy*/)); - mode.addActions(turn(-180)); - mode.addActions(move(/*TODO forward*/)); - mode.adddActions(turn(/*TODO left*/)); + mode.addActions(move(-12)); + mode.addActions(turn(42)); + mode.addActions(moveDistanceForwardAndGather(7)); + mode.addActions(move(-2)); + mode.addActions(turn(-45)); mode.addAction(Shoot()); - mode. - return mode; } diff --git a/src/main/java/frc/robot/autonomous/MatchConfiguration.java b/src/main/java/frc/robot/autonomous/MatchConfiguration.java index 10b3637f..232ca462 100644 --- a/src/main/java/frc/robot/autonomous/MatchConfiguration.java +++ b/src/main/java/frc/robot/autonomous/MatchConfiguration.java @@ -34,7 +34,8 @@ public enum Side { private ActionGroup autonomous; - private String[] autolist = { "None", "Shoot Basic", "Collect And Shoot", "Shoot from LB", "Shoot From PP", "Shoot From PS1", "Get Out Of The Way"}; + private String[] autolist = { "None", "Shoot Basic", "Collect And Shoot", "Shoot from LB", "Shoot From PP", + "Shoot From PS1", "Get Out Of The Way", "Shoot From Left", "Shoot From Right" }; private SendableChooser chooser = new SendableChooser(); @@ -99,17 +100,21 @@ public ActionGroup AutoDecisionTree() { case "Collect And Shoot": autonomous = Actions.collectAndShoot(); break; - case "Shoot from LB": + case "Shoot from LB": autonomous = Actions.shootLB(); break; - case "Shoot From PP": + case "Shoot From PP": autonomous = Actions.shootPP(); break; - case "Shoot From PS1": + case "Shoot From PS1": autonomous = Actions.shootPS1(); break; - case "Get Out Of The Way": + case "Get Out Of The Way": autonomous = Actions.noShoot(); + case "Shoot From Left": + autonomous = Actions.leftSide(); + case "Shoot From Right": + autonomous = Actions.rightSide(); default: Actions.doNothing(); } diff --git a/src/main/java/frc/robot/gamepieces/AbstractLayers/IntakeAL.java b/src/main/java/frc/robot/gamepieces/AbstractLayers/IntakeAL.java index ba77cdf0..c04d9468 100644 --- a/src/main/java/frc/robot/gamepieces/AbstractLayers/IntakeAL.java +++ b/src/main/java/frc/robot/gamepieces/AbstractLayers/IntakeAL.java @@ -76,7 +76,7 @@ public static void callDown() { IntakeAL.getInstance().setDown(); } - public static void callFoward() { + public static void callForward() { IntakeAL.getInstance().setForward(); } diff --git a/src/main/java/frc/robot/gamepieces/States/IntakeState.java b/src/main/java/frc/robot/gamepieces/States/IntakeState.java index 3c94c514..95e25f62 100644 --- a/src/main/java/frc/robot/gamepieces/States/IntakeState.java +++ b/src/main/java/frc/robot/gamepieces/States/IntakeState.java @@ -53,7 +53,7 @@ public void setIntakeArm(IntakerArm arm, IntakerRollers rollers) { IntakeAL.callBackward(); break; case ROLLERS_OUT: - IntakeAL.callFoward(); + IntakeAL.callForward(); break; default: case ROLLERS_OFF: @@ -82,7 +82,7 @@ public void setIntakeRoller(IntakerRollers rollers) { IntakeAL.callBackward(); break; case ROLLERS_OUT: - IntakeAL.callFoward(); + IntakeAL.callForward(); break; default: case ROLLERS_OFF: From 8704fe2e07cf079d4c3fc9619768c78e26f02df4 Mon Sep 17 00:00:00 2001 From: maxwell-tang <43733842+maxwell-tang@users.noreply.github.com> Date: Wed, 26 Feb 2020 19:43:18 -0500 Subject: [PATCH 7/8] removed todos --- src/main/java/frc/robot/autonomous/Actions.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/frc/robot/autonomous/Actions.java b/src/main/java/frc/robot/autonomous/Actions.java index 7785cb7b..ce5ef9a6 100644 --- a/src/main/java/frc/robot/autonomous/Actions.java +++ b/src/main/java/frc/robot/autonomous/Actions.java @@ -84,9 +84,7 @@ public static Action zeroDistance() { */ public static Action moveDistanceForward(double distance) { String actionText = "Move forward " + distance + " feet"; - // TODO determine the mult values - double timeAmt = (distance - 0.112) / 10.3596; - return new Action(actionText, new ActionGroup.Duration(timeAmt), () -> drive.arcadeDrive(0.8, 0)); + return new Action(actionText, new ActionGroup.ReachDistance(distance), () -> drive.arcadeDrive(0.8, 0)); } /** @@ -97,9 +95,7 @@ public static Action moveDistanceForward(double distance) { public static ActionGroup moveDistanceForwardAndGather(double distance) { String actionGroupText = "Move forward " + distance + " feet"; ActionGroup mode = new ActionGroup(actionGroupText); - // TODO determine the mult values - double timeAmt = (distance - 0.112) / 10.3596; - mode.addAction( new Action("", new ActionGroup.Duration(timeAmt), new ActionGroup.ConcurrentActions( + mode.addAction( new Action("", new ActionGroup.ReachDistance(distance), new ActionGroup.ConcurrentActions( () -> drive.arcadeDrive(0.8, 0), () -> IntakeAL.callForward()))); //TODO i dont know if this just does this once and stops; mode.addAction(new Action("",()->false,()->IntakeAL.callRollerStop())); @@ -115,7 +111,6 @@ public static ActionGroup moveDistanceForwardAndGather(double distance) { */ public static Action arc(double speed, double rotation) { String actionText = "Move forward " + speed + " feet"; - // TODO determine the mult values ActionGroup.MultiCondition condition = new ActionGroup.MultiCondition(new ActionGroup.ReachAngle(rotation), new ActionGroup.ReachDistance(speed)); From 51b0fb55583c84ae4a12d402e6b0b277a12a3479 Mon Sep 17 00:00:00 2001 From: maxwell-tang <43733842+maxwell-tang@users.noreply.github.com> Date: Fri, 28 Feb 2020 10:23:06 -0500 Subject: [PATCH 8/8] fixed action text --- src/main/java/frc/robot/autonomous/Actions.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/frc/robot/autonomous/Actions.java b/src/main/java/frc/robot/autonomous/Actions.java index ce5ef9a6..c3d66adc 100644 --- a/src/main/java/frc/robot/autonomous/Actions.java +++ b/src/main/java/frc/robot/autonomous/Actions.java @@ -182,7 +182,7 @@ public static ActionGroup DoNothing() { } public static ActionGroup shootGroup() { - String actionGroupText = "doing nothing"; + String actionGroupText = "shoots"; ActionGroup mode = new ActionGroup(actionGroupText); mode.addAction(Shoot()); mode.addAction(moveDistanceForward(10)); @@ -311,7 +311,7 @@ public static ActionGroup shootPS1() { */ public static ActionGroup noShoot() { // stuff - String actionGroupText = "shoot from player station 1"; + String actionGroupText = "dont shoot and back up"; ActionGroup mode = new ActionGroup(actionGroupText); mode.addActions(move(-10)); return mode; @@ -319,7 +319,7 @@ public static ActionGroup noShoot() { // TODO change names public static ActionGroup leftSide() { - String actionGroupText = "aims at the target and shoot"; + String actionGroupText = "shoot from left side"; double thing; ActionGroup mode = new ActionGroup(actionGroupText); mode.addAction(Shoot()); @@ -332,7 +332,7 @@ public static ActionGroup leftSide() { } public static ActionGroup rightSide() { - String actionGroupText = "aims at the target and shoot"; + String actionGroupText = "shoot from right side"; ActionGroup mode = new ActionGroup(actionGroupText); mode.addActions(move(-12)); mode.addActions(turn(42));