From 72fc3c9bd8099194cc4b2c8a747ed9f2be06f1c8 Mon Sep 17 00:00:00 2001 From: Cindy Zhang Date: Thu, 11 Feb 2016 18:31:57 -0800 Subject: [PATCH] add methods that return how far arm is sticking out and how high arm is at, and constants that need filling in --- .../usfirst/frc/team3501/robot/Constants.java | 1 + .../team3501/robot/subsystems/DefenseArm.java | 45 ++++++++++++------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/org/usfirst/frc/team3501/robot/Constants.java b/src/org/usfirst/frc/team3501/robot/Constants.java index df2ed0b6..fc2c7124 100644 --- a/src/org/usfirst/frc/team3501/robot/Constants.java +++ b/src/org/usfirst/frc/team3501/robot/Constants.java @@ -144,6 +144,7 @@ public class Constants { public static final int HAND_CHANNEL = 1; public final static double FULL_RANGE = 270.0; // in degrees public final static double OFFSET = -135.0; // in degrees + public final static double[] armPotValue = { 0.0, 45.0, 90.0 }; // 3 // level public final static double ARM_LENGTH = 0; // TODO: find actual length diff --git a/src/org/usfirst/frc/team3501/robot/subsystems/DefenseArm.java b/src/org/usfirst/frc/team3501/robot/subsystems/DefenseArm.java index 0794b380..24037413 100755 --- a/src/org/usfirst/frc/team3501/robot/subsystems/DefenseArm.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/DefenseArm.java @@ -13,19 +13,19 @@ public class DefenseArm extends Subsystem { private CANTalon defenseHand; private double hookHeight; private double footHeight; + private double[] potHandAngles; private double[] potArmAngles; + private double[] potAngles; // angles corresponding to pre-determined heights we will need public DefenseArm() { defenseArmPotentiometer = new AnalogPotentiometer( - Constants.DefenseArm.ARM_CHANNEL, - Constants.DefenseArm.FULL_RANGE, + Constants.DefenseArm.ARM_CHANNEL, Constants.DefenseArm.FULL_RANGE, Constants.DefenseArm.OFFSET); defenseHandPotentiometer = new AnalogPotentiometer( - Constants.DefenseArm.HAND_CHANNEL, - Constants.DefenseArm.FULL_RANGE, + Constants.DefenseArm.HAND_CHANNEL, Constants.DefenseArm.FULL_RANGE, Constants.DefenseArm.OFFSET); defenseArm = new CANTalon(Constants.DefenseArm.ARM_PORT); @@ -43,15 +43,13 @@ public class DefenseArm extends Subsystem { } /*** - * This method takes an arm location as input (range of [0,2]) - * Returns the angle of the arm corresponding to that arm location + * This method takes an arm location as input (range of [0,2]) Returns the + * angle of the arm corresponding to that arm location * * @param desiredArmLocation - * takes an arm location ranging from [0,2] - * 0 is the lowest position of arm - * 2 is the highest position of arm - * @return - * the angle of the arm corresponding to that arm location + * takes an arm location ranging from [0,2] 0 is the lowest position + * of arm 2 is the highest position of arm + * @return the angle of the arm corresponding to that arm location */ public double getAngleForHandLocation(int desiredArmLocation) { return potHandAngles[desiredArmLocation]; @@ -85,8 +83,8 @@ public class DefenseArm extends Subsystem { * * @param speed * The voltage that you set the motor at. The range of the voltage of - * the arm motor is from [-1,1]. A - * negative voltage makes the direction of the motor go backwards. + * the arm motor is from [-1,1]. A negative voltage makes the + * direction of the motor go backwards. */ public void setArmSpeed(double speed) { @@ -104,8 +102,8 @@ public class DefenseArm extends Subsystem { * * @param speed * The voltage that you set the motor at. The range of the voltage of - * the hand motor is from [-1,1]. A - * negative voltage makes the direction of the motor go backwards. + * the hand motor is from [-1,1]. A negative voltage makes the + * direction of the motor go backwards. */ public void setHandSpeed(double speed) { @@ -135,8 +133,23 @@ public class DefenseArm extends Subsystem { return (armMounted + armVerticalDisplacement + handVerticalDisplacement); } + public double getArmHorizontalDist() { + double arm = Constants.DefenseArm.ARM_LENGTH * Math.cos(getArmPotAngle()); + double hand = Constants.DefenseArm.HAND_LENGTH + * Math.cos(getHandPotAngle()); + return (arm + hand); + } + + public double getArmHeight() { + double armMounted = Constants.DefenseArm.ARM_MOUNTED_HEIGHT; + double arm = Constants.DefenseArm.ARM_LENGTH * Math.sin(getArmPotAngle()); + double hand = Constants.DefenseArm.HAND_LENGTH + * Math.sin(getHandPotAngle()); + return (armMounted + arm + hand); + } + public boolean isOutsideRange() { - if (getArmHorizontalDisplacement() < 15) + if (getArmHorizontalDist() < 15) return false; return true; } -- 2.30.2