private CANTalon defenseHand;
private double hookHeight;
private double footHeight;
- private double[] potAngles;
+ private double[] potAngles = { 0, 45, 90 };
+
// angles corresponding to pre-determined heights we will need
public DefenseArm() {
defenseArm = new CANTalon(Constants.DefenseArm.ARM_PORT);
defenseHand = new CANTalon(Constants.DefenseArm.HAND_PORT);
- potAngles = createPotArray();
}
public double getArmPotAngle() {
* @return
* the angle of the arm corresponding to that arm location
*/
- public double getAngleForLocation(int desiredArmLocation) {
- return potAngles[desiredArmLocation];
- }
-
- public double[] createPotArray() {
- double[] arr = new double[3];
-
- for (int i = 0; i < 3; i++) {
- arr[i] = 45 * i;
- }
- return arr;
+ public double getLevelValue(int level) {
+ if (level >= potAngles.length)
+ return potAngles[level];
+ else
+ return 0;
}
/***
defenseHand.set(speed);
}
+ // TODO: figure out if measurements are all in inches
+ public double getArmHorizontalDist() {
+ double armHorizontalDisplacement = Constants.DefenseArm.ARM_LENGTH
+ * Math.cos(getArmPotAngle());
+ double handHorizontalDisplacement = Constants.DefenseArm.HAND_LENGTH
+ * Math.cos(getHandPotAngle());
+ return (armHorizontalDisplacement + handHorizontalDisplacement);
+ }
+
+ public double getArmHeight() {
+ double armMounted = Constants.DefenseArm.ARM_MOUNTED_HEIGHT;
+ double armVerticalDisplacement = Constants.DefenseArm.ARM_LENGTH
+ * Math.sin(getArmPotAngle());
+ double handVerticalDisplacement = Constants.DefenseArm.HAND_LENGTH
+ * Math.sin(getHandPotAngle());
+ return (armMounted + armVerticalDisplacement + handVerticalDisplacement);
+ }
+
+ public boolean isOutsideRange() {
+ if (getArmHorizontalDist() < 15)
+ return false;
+ return true;
+ }
+
@Override
protected void initDefaultCommand() {
}