Tuned intake action to work every time.

Change-Id: I3918d0270581e33d002e5f578dde5785700f19f1
diff --git a/frc971/actors/pickup_actor.cc b/frc971/actors/pickup_actor.cc
index ef32c92..f0ea383 100644
--- a/frc971/actors/pickup_actor.cc
+++ b/frc971/actors/pickup_actor.cc
@@ -12,15 +12,23 @@
 
 namespace frc971 {
 namespace actors {
+namespace {
+constexpr double kClawPickupVelocity = 3.00;
+constexpr double kClawPickupAcceleration = 4.0;
+constexpr double kClawMoveVelocity = 3.00;
+constexpr double kClawMoveAcceleration = 8.0;
+}  // namespace
 
 PickupActor::PickupActor(PickupActionQueueGroup* queues)
     : aos::common::actions::ActorBase<PickupActionQueueGroup>(queues) {}
 
 bool PickupActor::RunAction(const PickupParams& params) {
-  constexpr double kAngleEpsilon = 0.05;
+  constexpr double kAngleEpsilon = 0.10;
   {
     auto message = control_loops::claw_queue.goal.MakeMessage();
     message->angle = params.pickup_angle;
+    message->max_velocity = kClawPickupVelocity;
+    message->max_acceleration = kClawPickupAcceleration;
     message->angular_velocity = 0.0;
     message->intake = 0.0;
     message->rollers_closed = true;
@@ -43,6 +51,8 @@
   {
     auto message = control_loops::claw_queue.goal.MakeMessage();
     message->angle = params.pickup_angle;
+    message->max_velocity = kClawPickupVelocity;
+    message->max_acceleration = kClawPickupAcceleration;
     message->angular_velocity = 0.0;
     message->intake = params.intake_voltage;
     message->rollers_closed = true;
@@ -64,7 +74,9 @@
 
   {
     auto message = control_loops::claw_queue.goal.MakeMessage();
-    message->angle = params.suck_angle;
+    message->angle = params.suck_angle_finish;
+    message->max_velocity = kClawMoveVelocity;
+    message->max_acceleration = kClawMoveAcceleration;
     message->angular_velocity = 0.0;
     message->intake = params.intake_voltage;
     message->rollers_closed = true;
@@ -83,6 +95,8 @@
   {
     auto message = control_loops::claw_queue.goal.MakeMessage();
     message->angle = params.pickup_finish_angle;
+    message->max_velocity = kClawMoveVelocity;
+    message->max_acceleration = kClawMoveAcceleration;
     message->angular_velocity = 0.0;
     message->intake = 0.0;
     message->rollers_closed = true;
diff --git a/frc971/joystick_reader.cc b/frc971/joystick_reader.cc
index 9fd4441..502c83e 100644
--- a/frc971/joystick_reader.cc
+++ b/frc971/joystick_reader.cc
@@ -157,12 +157,16 @@
 
     if (data.PosEdge(kPickup)) {
       actors::PickupParams params;
-      params.pickup_angle = 0.7;
-      params.suck_angle = 0.5;
+      // Lift to here initially.
+      params.pickup_angle = 0.9;
+      // Start sucking here
+      params.suck_angle = 0.8;
+      // Go back down to here to finish sucking.
       params.suck_angle_finish = 0.4;
-      params.pickup_finish_angle = 0.87;
-      params.intake_time = 0.5;
-      params.intake_voltage = 12.0;
+      // Pack the box back in here.
+      params.pickup_finish_angle = 0.95;
+      params.intake_time = 0.8;
+      params.intake_voltage = 9.0;
       action_queue_.EnqueueAction(actors::MakePickupAction(params));
     }
     if (data.PosEdge(kElevatorDown)) {