implement PushDownChevalDeFrise command group
authorMeryem Esa <meresa14@gmail.com>
Tue, 16 Feb 2016 20:44:12 +0000 (12:44 -0800)
committerMeryem Esa <meresa14@gmail.com>
Tue, 16 Feb 2016 22:44:20 +0000 (14:44 -0800)
src/org/usfirst/frc/team3501/robot/commands/intakearm/PushDownChevalDeFrise.java

index bccdc7d06844b01188e0a04a2214dc05b23feee3..f877cc64721cda24368244233111c76f27320ddc 100755 (executable)
@@ -1,6 +1,7 @@
 package org.usfirst.frc.team3501.robot.commands.intakearm;
 
 import org.usfirst.frc.team3501.robot.Robot;
+import org.usfirst.frc.team3501.robot.commands.driving.DriveDistance;
 
 import edu.wpi.first.wpilibj.command.CommandGroup;
 
@@ -15,6 +16,14 @@ import edu.wpi.first.wpilibj.command.CommandGroup;
  *
  */
 public class PushDownChevalDeFrise extends CommandGroup {
+  // distances are in inches
+  private final double MIN_ANGLE = 0; // TODO: find min angle the intake arm has
+                                      // to be to be over the cheval de frise
+  private final double RAMP_DIST = 12;
+  private final double MAX_TIMEOUT_RAMP = 1; // TODO: check that one second is
+                                             // enough
+  private final double LOWEST_ANGLE = 0; // TODO: find angle
+  private final double DEFAULT_ARM_SPEED = 0.4;
 
   public PushDownChevalDeFrise() {
     requires(Robot.intakeArm);
@@ -33,7 +42,22 @@ public class PushDownChevalDeFrise extends CommandGroup {
      *
      * move forward a little
      *
+     * move arm down
      */
 
+    if (Robot.intakeArm.getArmAngle() > MIN_ANGLE) {
+      addSequential(new DriveDistance(RAMP_DIST, MAX_TIMEOUT_RAMP));
+      addSequential(new MoveIntakeArmToAngle(LOWEST_ANGLE, DEFAULT_ARM_SPEED));
+
+    } else {
+      addSequential(new MoveIntakeArmToAngle(MIN_ANGLE + 3, DEFAULT_ARM_SPEED)); // TODO:
+      // check that adding
+      // 3 is correct
+
+      addSequential(new DriveDistance(RAMP_DIST, MAX_TIMEOUT_RAMP));
+      addSequential(new MoveIntakeArmToAngle(LOWEST_ANGLE, DEFAULT_ARM_SPEED));
+
+    }
+
   }
 }