Removed unnecesary claw actor.

Change-Id: I588b57d9ac1c950602fad7ef5a30ae2a89d5f5af
diff --git a/frc971/actors/actors.gyp b/frc971/actors/actors.gyp
index e8e392a..b2f93a5 100644
--- a/frc971/actors/actors.gyp
+++ b/frc971/actors/actors.gyp
@@ -5,7 +5,6 @@
       'type': 'none',
       'dependencies': [
         'drivetrain_action',
-        'claw_action',
         'score_action',
         'score_action_test',
         'pickup_action',
@@ -16,7 +15,6 @@
         'can_pickup_action',
         'horizontal_can_pickup_action',
         'lift_action',
-        'claw_action_test',
         'stack_action_test',
       ],
     },
@@ -589,77 +587,5 @@
         'lift_action_lib',
       ],
     },
-    {
-      'target_name': 'claw_action_queue',
-      'type': 'static_library',
-      'sources': ['claw_action.q'],
-      'variables': {
-        'header_path': 'frc971/actors',
-      },
-      'dependencies': [
-        '<(AOS)/common/actions/actions.gyp:action_queue',
-      ],
-      'export_dependent_settings': [
-        '<(AOS)/common/actions/actions.gyp:action_queue',
-      ],
-      'includes': ['../../aos/build/queues.gypi'],
-    },
-    {
-      'target_name': 'claw_action_lib',
-      'type': 'static_library',
-      'sources': [
-        'claw_actor.cc',
-      ],
-      'dependencies': [
-        'claw_action_queue',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(AOS)/common/common.gyp:time',
-        '<(AOS)/common/controls/controls.gyp:control_loop',
-        '<(AOS)/common/util/util.gyp:phased_loop',
-        '<(AOS)/build/aos.gyp:logging',
-        '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(EXTERNALS):eigen',
-        '<(AOS)/common/util/util.gyp:trapezoid_profile',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
-      ],
-      'export_dependent_settings': [
-        '<(EXTERNALS):eigen',
-        '<(AOS)/common/actions/actions.gyp:action_lib',
-        'claw_action_queue',
-      ],
-    },
-    {
-      'target_name': 'claw_action',
-      'type': 'executable',
-      'sources': [
-        'claw_actor_main.cc',
-      ],
-      'dependencies': [
-        '<(AOS)/linux_code/linux_code.gyp:init',
-        '<(AOS)/common/actions/actions.gyp:action_lib',
-        'claw_action_queue',
-        'claw_action_lib',
-      ],
-    },
-    {
-      'target_name': 'claw_action_test',
-      'type': 'executable',
-      'sources': [
-        'claw_actor_test.cc',
-      ],
-      'dependencies': [
-        '<(EXTERNALS):gtest',
-        '<(AOS)/common/controls/controls.gyp:control_loop',
-        '<(AOS)/common/common.gyp:queue_testutils',
-        '<(AOS)/common/logging/logging.gyp:queue_logging',
-        '<(AOS)/common/common.gyp:queues',
-        '<(AOS)/common/common.gyp:time',
-        '<(AOS)/linux_code/linux_code.gyp:init',
-        '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
-        'claw_action_queue',
-        'claw_action_lib',
-      ],
-    },
   ],
 }
diff --git a/frc971/actors/claw_action.q b/frc971/actors/claw_action.q
deleted file mode 100644
index ce5bee7..0000000
--- a/frc971/actors/claw_action.q
+++ /dev/null
@@ -1,29 +0,0 @@
-package frc971.actors;
-
-import "aos/common/actions/actions.q";
-
-struct ClawParams {
-  // Goal angle.
-  double angle;
-  // Maximum velocity during the motion.
-  double max_velocity;
-  // Maximum acceleration during the motion.
-  double max_acceleration;
-  // Positive is sucking in, negative is spitting out.
-  double intake_voltage;
-  bool rollers_closed;
-};
-
-queue_group ClawActionQueueGroup {
-  implements aos.common.actions.ActionQueueGroup;
-
-  message Goal {
-    uint32_t run;
-    ClawParams params;
-  };
-
-  queue Goal goal;
-  queue aos.common.actions.Status status;
-};
-
-queue_group ClawActionQueueGroup claw_action;
diff --git a/frc971/actors/claw_actor.cc b/frc971/actors/claw_actor.cc
deleted file mode 100644
index ab1cffc..0000000
--- a/frc971/actors/claw_actor.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-#include <functional>
-#include <numeric>
-
-#include <Eigen/Dense>
-
-#include "aos/common/commonmath.h"
-#include "aos/common/controls/control_loop.h"
-#include "aos/common/logging/logging.h"
-#include "aos/common/logging/queue_logging.h"
-#include "aos/common/actions/actor.h"
-#include "aos/common/util/phased_loop.h"
-#include "aos/common/util/trapezoid_profile.h"
-
-#include "frc971/constants.h"
-#include "frc971/actors/claw_actor.h"
-#include "frc971/control_loops/claw/claw.q.h"
-
-namespace frc971 {
-namespace actors {
-namespace {
-
-// Defines finished.
-constexpr double kAngleEpsilon = 0.07;
-
-}  // namespace
-
-ClawActor::ClawActor(actors::ClawActionQueueGroup *s)
-    : aos::common::actions::ActorBase<actors::ClawActionQueueGroup>(s),
-      profile_(::aos::controls::kLoopFrequency) {}
-
-bool ClawActor::Iterate(const ClawParams &params) {
-  const double goal_angle = params.angle;
-
-  ::Eigen::Matrix<double, 2, 1> goal_state =
-      profile_.Update(goal_angle, 0.0);
-
-  auto message = control_loops::claw_queue.goal.MakeMessage();
-  message->angle = goal_state(0, 0);
-  message->angular_velocity = goal_state(1, 0);
-  message->intake = params.intake_voltage;
-  message->rollers_closed = params.rollers_closed;
-
-  LOG_STRUCT(DEBUG, "Sending claw goal", *message);
-  message.Send();
-
-  control_loops::claw_queue.status.FetchLatest();
-  if (!control_loops::claw_queue.status.get()) {
-    return false;
-  }
-  const double current_angle = control_loops::claw_queue.status->angle;
-  LOG_STRUCT(DEBUG, "Got claw status", *control_loops::claw_queue.status);
-
-  if (::std::abs(goal_angle - current_angle) < kAngleEpsilon &&
-      ::std::abs(goal_angle - goal_state(0, 0)) < 0.0000001) {
-    return true;
-  }
-
-  return false;
-}
-
-bool ClawActor::RunAction(const ClawParams &params) {
-  control_loops::claw_queue.status.FetchLatest();
-  if (control_loops::claw_queue.status.get()) {
-    if (!control_loops::claw_queue.status->zeroed) {
-      LOG(ERROR, "We are not running actions on an unzeroed claw!\n");
-      return false;
-    }
-    Eigen::Matrix<double, 2, 1> current;
-    current.setZero();
-    current << control_loops::claw_queue.status->goal_angle, 0.0;
-
-    // Re-initialize the profile to start where we currently are.
-    profile_.MoveCurrentState(current);
-
-    // Update the parameters.
-    profile_.set_maximum_velocity(params.max_velocity);
-    profile_.set_maximum_acceleration(params.max_acceleration);
-
-  } else {
-    LOG(ERROR, "No claw status!\n");
-    return false;
-  }
-
-  while (!Iterate(params)) {
-    // wait until next Xms tick
-    ::aos::time::PhasedLoopXMS(::aos::controls::kLoopFrequency.ToMSec(), 2500);
-
-    // check if we should stop before we send
-    if (ShouldCancel()) return true;
-  }
-
-  LOG(INFO, "Claw done moving.\n");
-  return true;
-}
-
-::std::unique_ptr<ClawAction> MakeClawAction(const ClawParams &p) {
-  return ::std::unique_ptr<ClawAction>(
-      new ClawAction(&::frc971::actors::claw_action, p));
-}
-
-}  // namespace actors
-}  // namespace frc971
diff --git a/frc971/actors/claw_actor.h b/frc971/actors/claw_actor.h
deleted file mode 100644
index bc4888f..0000000
--- a/frc971/actors/claw_actor.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef FRC971_ACTIONS_CLAW_ACTION_H_
-#define FRC971_ACTIONS_CLAW_ACTION_H_
-
-#include <memory>
-
-#include "frc971/actors/claw_action.q.h"
-#include "aos/common/actions/actor.h"
-#include "aos/common/actions/actions.h"
-#include "aos/common/util/trapezoid_profile.h"
-
-namespace frc971 {
-namespace actors {
-namespace testing {
-class ClawActorTest_ValidGoals_Test;
-}
-
-class ClawActor : public aos::common::actions::ActorBase<ClawActionQueueGroup> {
- public:
-  explicit ClawActor(ClawActionQueueGroup *s);
-  bool RunAction(const ClawParams &params) override;
-
- private:
-  friend class testing::ClawActorTest_ValidGoals_Test;
-
-  // Returns true if it's reached its ultimate goal, false otherwise.
-  bool Iterate(const ClawParams &params);
-
-  ::aos::util::TrapezoidProfile profile_;
-};
-
-typedef aos::common::actions::TypedAction<ClawActionQueueGroup> ClawAction;
-
-// Makes a new FridgeProfileActor action.
-::std::unique_ptr<ClawAction> MakeClawAction(const ClawParams &claw_params);
-
-}  // namespace actors
-}  // namespace frc971
-
-#endif
diff --git a/frc971/actors/claw_actor_main.cc b/frc971/actors/claw_actor_main.cc
deleted file mode 100644
index d0cd0d5..0000000
--- a/frc971/actors/claw_actor_main.cc
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <stdio.h>
-
-#include "aos/linux_code/init.h"
-#include "aos/common/logging/logging.h"
-#include "frc971/actors/claw_action.q.h"
-#include "frc971/actors/claw_actor.h"
-
-using ::aos::time::Time;
-
-int main(int /*argc*/, char * /*argv*/[]) {
-  ::aos::Init();
-
-  frc971::actors::ClawActor claw(
-      &::frc971::actors::claw_action);
-  claw.Run();
-
-  ::aos::Cleanup();
-  return 0;
-}
diff --git a/frc971/actors/claw_actor_test.cc b/frc971/actors/claw_actor_test.cc
deleted file mode 100644
index 2fa972c..0000000
--- a/frc971/actors/claw_actor_test.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-#include <unistd.h>
-
-#include <memory>
-
-#include "gtest/gtest.h"
-#include "aos/common/controls/control_loop.h"
-#include "aos/common/queue.h"
-#include "aos/common/queue_testutils.h"
-#include "aos/common/actions/actor.h"
-#include "frc971/actors/claw_action.q.h"
-#include "frc971/actors/claw_actor.h"
-#include "frc971/control_loops/claw/claw.q.h"
-
-using ::aos::time::Time;
-
-namespace frc971 {
-namespace actors {
-namespace testing {
-
-class ClawActorTest : public ::testing::Test {
- protected:
-  ClawActorTest() {
-    frc971::actors::claw_action.goal.Clear();
-    frc971::actors::claw_action.status.Clear();
-    control_loops::claw_queue.status.Clear();
-    control_loops::claw_queue.goal.Clear();
-  }
-
-  virtual ~ClawActorTest() {
-    frc971::actors::claw_action.goal.Clear();
-    frc971::actors::claw_action.status.Clear();
-    control_loops::claw_queue.status.Clear();
-    control_loops::claw_queue.goal.Clear();
-  }
-
-  // Bring up and down Core.
-  ::aos::common::testing::GlobalCoreInstance my_core;
-};
-
-// Tests that it runs normally and exits when it should.
-TEST_F(ClawActorTest, BasicTest) {
-  ClawActor claw(&frc971::actors::claw_action);
-
-  // Make some reasonable parameters.
-  ClawParams params;
-  params.angle = 0.5;
-  params.max_velocity = 0.5;
-  params.max_acceleration = 5.0;
-
-  // Fake the status so that it thinks we're already there.
-  control_loops::claw_queue.status.MakeWithBuilder()
-      .angle(0.5)
-      .goal_angle(0.5)
-      .zeroed(true)
-      .Send();
-
-  // Now we run it and it should exit immediately.
-  EXPECT_TRUE(claw.RunAction(params));
-
-  // It shouldn't have sent us anywhere.
-  ASSERT_TRUE(control_loops::claw_queue.goal.FetchLatest());
-  EXPECT_EQ(params.angle, control_loops::claw_queue.goal->angle);
-}
-
-}  // namespace testing.
-}  // namespace actors.
-}  // namespace frc971.
diff --git a/frc971/prime/start_list.txt b/frc971/prime/start_list.txt
index d4c6cdc..b526057 100644
--- a/frc971/prime/start_list.txt
+++ b/frc971/prime/start_list.txt
@@ -1,12 +1,13 @@
-binary_log_writer
-wpilib_interface
+can_pickup_action
 joystick_reader
-drivetrain
-auto
+pickup_action
+stack_action
+wpilib_interface
+binary_log_writer
 claw
 fridge
-drivetrain_action
-score_action
-claw_action
-stack_action
-intake_action
+horizontal_can_pickup_action
+lift_action
+stack_and_lift_action
+stack_and_hold_action
+held_to_lift_action