From ff9a504fa2aa658265087e163120b628b6da4129 Mon Sep 17 00:00:00 2001 From: Meryem Esa Date: Wed, 10 Feb 2016 19:59:02 -0800 Subject: [PATCH] add method to calculate angle to turn after passing through defense to shoot --- .../team3501/robot/commands/AlignToScore.java | 40 +++++++++++++++++-- .../team3501/robot/subsystems/DriveTrain.java | 2 +- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/org/usfirst/frc/team3501/robot/commands/AlignToScore.java b/src/org/usfirst/frc/team3501/robot/commands/AlignToScore.java index a2f83d42..97b8ad2c 100755 --- a/src/org/usfirst/frc/team3501/robot/commands/AlignToScore.java +++ b/src/org/usfirst/frc/team3501/robot/commands/AlignToScore.java @@ -16,7 +16,9 @@ import edu.wpi.first.wpilibj.command.CommandGroup; * */ public class AlignToScore extends CommandGroup { - private final double DIST_CENTER_OF_MASS_TO_FRONT_OF_ROBOT = 0; + private final static double CENTER_OF_MASS_TO_ROBOT_FRONT = 0; + private final static double DIST_CASTLE_WALL_TO_SIDE_GOAL = 0; + private final static double DIST_CASTLE_WALL_TO_FRONT_GOAL = 0; private final double DEFAULT_SPEED = 0.5; @@ -49,6 +51,8 @@ public class AlignToScore extends CommandGroup { private final double POS5_TURN1 = 0; private final double POS5_DIST2 = 0; + public double horizontalDistToGoal; + public AlignToScore(int position) { switch (position) { @@ -59,12 +63,14 @@ public class AlignToScore extends CommandGroup { addSequential(new DriveForDistance(POS1_DIST1, DEFAULT_SPEED)); addSequential(new TurnForAngle(POS1_TURN1)); addSequential(new DriveForDistance(POS1_DIST2, DEFAULT_SPEED)); + horizontalDistToGoal = 0; case 2: addSequential(new DriveForDistance(POS2_DIST1, DEFAULT_SPEED)); addSequential(new TurnForAngle(POS2_TURN1)); addSequential(new DriveForDistance(POS2_DIST2, DEFAULT_SPEED)); + horizontalDistToGoal = 0; case 3: @@ -73,6 +79,7 @@ public class AlignToScore extends CommandGroup { addSequential(new DriveForDistance(POS3_DIST2, DEFAULT_SPEED)); addSequential(new TurnForAngle(POS3_TURN2)); addSequential(new DriveForDistance(POS3_DIST3, DEFAULT_SPEED)); + horizontalDistToGoal = 0; case 4: @@ -81,17 +88,42 @@ public class AlignToScore extends CommandGroup { addSequential(new DriveForDistance(POS4_DIST2, DEFAULT_SPEED)); addSequential(new TurnForAngle(POS4_TURN2)); addSequential(new DriveForDistance(POS4_DIST3, DEFAULT_SPEED)); + horizontalDistToGoal = 0; case 5: addSequential(new DriveForDistance(POS5_DIST1, DEFAULT_SPEED)); addSequential(new TurnForAngle(POS5_TURN1)); addSequential(new DriveForDistance(POS5_DIST2, DEFAULT_SPEED)); + horizontalDistToGoal = 0; } } - public static void calculatePath() { - double leftDistance = Robot.shooter.getLeftDistanceToTower(); - double rightDistance = Robot.shooter.getRightDistanceToTower(); + public static double calculatePath(int position, + double horizontalDistToGoal) { + double leftDist = Robot.driveTrain.getLeftLidarDistance(); + double rightDist = Robot.driveTrain.getRightLidarDistance(); + + double errorAngle = Math.atan(Math.abs(leftDist - rightDist) / 2); + double distToTower; + // TODO: figure out if we do want to shoot into the side goal if we are + // in position 1 or 2, or if we want to change that + if (position == 1 || position == 2) { + distToTower = Math + .cos(CENTER_OF_MASS_TO_ROBOT_FRONT + (leftDist - rightDist) / 2) + - DIST_CASTLE_WALL_TO_SIDE_GOAL; + } + + // TODO: figure out if we do want to shoot into the font goal if we are + // in position 3, 4, 5, or if we want to change that + else { + distToTower = Math + .cos(CENTER_OF_MASS_TO_ROBOT_FRONT + (leftDist - rightDist) / 2) + - DIST_CASTLE_WALL_TO_SIDE_GOAL; + } + + double angleToTurn = Math.atan(distToTower / horizontalDistToGoal); + + return angleToTurn; } } diff --git a/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java b/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java index 41a8ac16..0d1db15b 100644 --- a/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java @@ -119,7 +119,7 @@ public class DriveTrain extends PIDSubsystem { return leftLidar.pidGet(); } - public double getsRightLidarDistance() { + public double getRightLidarDistance() { return rightLidar.pidGet(); } -- 2.30.2