blob: 25213caf56f4eeb416958679d759e80b1ef55df0 [file] [log] [blame]
Austin Schuh69792662015-02-22 21:39:52 -08001#include <math.h>
2
3#include "aos/common/time.h"
4#include "frc971/actors/lift_actor.h"
Austin Schuh69792662015-02-22 21:39:52 -08005#include "frc971/constants.h"
Austin Schuh6e242ac2015-03-07 17:08:21 -08006#include "frc971/actors/fridge_profile_lib.h"
Austin Schuh69792662015-02-22 21:39:52 -08007
8namespace frc971 {
9namespace actors {
10namespace {
Austin Schuh6e242ac2015-03-07 17:08:21 -080011constexpr ProfileParams kArmMove{0.6, 2.0};
12constexpr ProfileParams kElevatorMove{0.9, 3.0};
Austin Schuh69792662015-02-22 21:39:52 -080013} // namespace
14
15LiftActor::LiftActor(LiftActionQueueGroup *queues)
Austin Schuh6e242ac2015-03-07 17:08:21 -080016 : FridgeActorBase<LiftActionQueueGroup>(queues) {}
Austin Schuh69792662015-02-22 21:39:52 -080017
18bool LiftActor::RunAction(const LiftParams &params) {
19 // Lift the box straight up.
Austin Schuh6e242ac2015-03-07 17:08:21 -080020 DoFridgeProfile(params.lift_height, 0.0, kElevatorMove, kArmMove, true);
Austin Schuh69792662015-02-22 21:39:52 -080021 // Move it back to the storage location.
Austin Schuh6e242ac2015-03-07 17:08:21 -080022 DoFridgeProfile(params.lift_height, params.lift_arm, kElevatorMove, kArmMove,
23 true);
Austin Schuh69792662015-02-22 21:39:52 -080024
25 return true;
26}
27
28::std::unique_ptr<LiftAction> MakeLiftAction(const LiftParams &params) {
29 return ::std::unique_ptr<LiftAction>(
30 new LiftAction(&::frc971::actors::lift_action, params));
31}
32
33} // namespace actors
34} // namespace frc971