Added pause while lifing the can.

Change-Id: I8ff43073566592fc0d8de7ddd693842adf86be2d
diff --git a/frc971/actors/lift_action_params.q b/frc971/actors/lift_action_params.q
index 7aa29b8..b31982b 100644
--- a/frc971/actors/lift_action_params.q
+++ b/frc971/actors/lift_action_params.q
@@ -7,6 +7,11 @@
   // Arm goal.
   double lift_arm;
 
+  // If true, do the second lift.
+  bool second_lift;
+  // Arm goal.
+  double intermediate_lift_height;
+
   // True to move the claw in the middle of the lift.
   bool pack_claw;
   // Iff pack_claw is true, the angle to move the claw to.
diff --git a/frc971/actors/lift_actor.cc b/frc971/actors/lift_actor.cc
index 44222fd..ff36bef 100644
--- a/frc971/actors/lift_actor.cc
+++ b/frc971/actors/lift_actor.cc
@@ -11,6 +11,7 @@
 namespace {
 constexpr ProfileParams kArmMove{0.6, 1.0};
 constexpr ProfileParams kElevatorMove{0.9, 3.0};
+constexpr ProfileParams kElevatorFixMove{0.9, 2.0};
 }  // namespace
 
 LiftActor::LiftActor(LiftActionQueueGroup *queues)
@@ -25,6 +26,15 @@
   double goal_height = params.lift_height;
   double goal_angle = 0.0;
 
+  if (params.second_lift) {
+    DoFridgeProfile(params.intermediate_lift_height, 0.0, kElevatorFixMove,
+                    kArmMove,
+                    control_loops::fridge_queue.status->grabbers.top_front,
+                    control_loops::fridge_queue.status->grabbers.bottom_front,
+                    control_loops::fridge_queue.status->grabbers.bottom_back);
+    if (ShouldCancel()) return true;
+  }
+
   if (!StartFridgeProfile(
           params.lift_height, 0.0, kElevatorMove, kArmMove,
           control_loops::fridge_queue.status->grabbers.top_front,
diff --git a/frc971/autonomous/auto.cc b/frc971/autonomous/auto.cc
index 42f4ca9..399416c 100644
--- a/frc971/autonomous/auto.cc
+++ b/frc971/autonomous/auto.cc
@@ -400,6 +400,7 @@
     params.claw_out_angle = kClawStackClearance;
     params.lift_params.lift_height = kStackUpHeight;
     params.lift_params.lift_arm = kStackUpArm;
+    params.lift_params.second_lift = false;
 
     lift = actors::MakeHeldToLiftAction(params);
     lift->Start();
diff --git a/frc971/joystick_reader.cc b/frc971/joystick_reader.cc
index e85240f..7dd7024 100644
--- a/frc971/joystick_reader.cc
+++ b/frc971/joystick_reader.cc
@@ -290,6 +290,7 @@
       params.clamp_pause_time = 0.0;
       params.lift_params.lift_height = kStackUpHeight;
       params.lift_params.lift_arm = kStackUpArm;
+      params.lift_params.second_lift = false;
       params.grab_after_lift = true;
       fridge_closed_ = true;
 
@@ -333,6 +334,7 @@
       params.claw_out_angle = kClawStackClearance;
       params.lift_params.lift_height = kStackUpHeight;
       params.lift_params.lift_arm = kStackUpArm;
+      params.lift_params.second_lift = false;
       fridge_closed_ = true;
 
       action_queue_.EnqueueAction(actors::MakeHeldToLiftAction(params));
@@ -345,6 +347,8 @@
       params.lift_arm = 0.3;
       params.pack_claw = false;
       params.pack_claw_angle = 0;
+      params.intermediate_lift_height = 0.37;
+      params.second_lift = true;
       fridge_closed_ = true;
 
       action_queue_.EnqueueAction(actors::MakeLiftAction(params));