add methods that return how far arm is sticking out and how high arm is at, and const...
authorCindy Zhang <cindyzyx9@gmail.com>
Fri, 12 Feb 2016 02:31:57 +0000 (18:31 -0800)
committerKevin Zhang <icestormf1@gmail.com>
Tue, 16 Feb 2016 19:37:02 +0000 (11:37 -0800)
src/org/usfirst/frc/team3501/robot/Constants.java
src/org/usfirst/frc/team3501/robot/subsystems/DefenseArm.java

index df2ed0b6b61b87bb749bbfb57c7703532c763fdf..fc2c712491b9fc3a3e27f5092ff2b901c07351ea 100644 (file)
@@ -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
index 0794b380a3ec01fbf51d05c9ec70ed27577274c1..24037413086b1219d188142190fe01dddd182094 100755 (executable)
@@ -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;
   }