blob: 22dbcd6456051e2cf4286ed00829a5362a714838 [file] [log] [blame]
Tyler Chatowe51334a2019-01-20 16:58:16 -08001#ifndef Y2019_CONTROL_LOOPS_SUPERSTRUCTURE_SUPERSTRUCTURE_H_
2#define Y2019_CONTROL_LOOPS_SUPERSTRUCTURE_SUPERSTRUCTURE_H_
3
4#include "aos/controls/control_loop.h"
Theo Bafrali00e42272019-02-12 01:07:46 -08005#include "frc971/control_loops/static_zeroing_single_dof_profiled_subsystem.h"
6#include "y2019/constants.h"
7#include "y2019/control_loops/superstructure/collision_avoidance.h"
Tyler Chatowe51334a2019-01-20 16:58:16 -08008#include "y2019/control_loops/superstructure/superstructure.q.h"
9
10namespace y2019 {
11namespace control_loops {
12namespace superstructure {
13
14class Superstructure
15 : public ::aos::controls::ControlLoop<SuperstructureQueue> {
16 public:
17 explicit Superstructure(
Austin Schuh55a13dc2019-01-27 22:39:03 -080018 ::aos::EventLoop *event_loop,
19 const ::std::string &name =
20 ".y2019.control_loops.superstructure.superstructure_queue");
Tyler Chatowe51334a2019-01-20 16:58:16 -080021
Theo Bafrali00e42272019-02-12 01:07:46 -080022 using PotAndAbsoluteEncoderSubsystem =
23 ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystem<
24 ::frc971::zeroing::PotAndAbsoluteEncoderZeroingEstimator,
25 ::frc971::control_loops::PotAndAbsoluteEncoderProfiledJointStatus>;
26 using AbsoluteEncoderSubsystem =
27 ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystem<
28 ::frc971::zeroing::AbsoluteEncoderZeroingEstimator,
29 ::frc971::control_loops::AbsoluteEncoderProfiledJointStatus>;
30
31 const PotAndAbsoluteEncoderSubsystem &elevator() const {
32 return elevator_;
33 }
34 const PotAndAbsoluteEncoderSubsystem &wrist() const {
35 return wrist_;
36 }
37 const AbsoluteEncoderSubsystem &intake() const {
38 return intake_;
39 }
40 const PotAndAbsoluteEncoderSubsystem &stilts() const {
41 return stilts_;
42 }
43
Tyler Chatowe51334a2019-01-20 16:58:16 -080044 protected:
Theo Bafrali00e42272019-02-12 01:07:46 -080045 virtual void RunIteration(const SuperstructureQueue::Goal *unsafe_goal,
46 const SuperstructureQueue::Position *position,
47 SuperstructureQueue::Output *output,
48 SuperstructureQueue::Status *status) override;
Tyler Chatowe51334a2019-01-20 16:58:16 -080049
50 private:
Theo Bafrali00e42272019-02-12 01:07:46 -080051 PotAndAbsoluteEncoderSubsystem elevator_;
52 PotAndAbsoluteEncoderSubsystem wrist_;
53 AbsoluteEncoderSubsystem intake_;
54 PotAndAbsoluteEncoderSubsystem stilts_;
55
56 CollisionAvoidance collision_avoidance_;
Tyler Chatowe51334a2019-01-20 16:58:16 -080057
58 DISALLOW_COPY_AND_ASSIGN(Superstructure);
59};
60
61} // namespace superstructure
62} // namespace control_loops
63} // namespace y2019
64
Austin Schuh55a13dc2019-01-27 22:39:03 -080065#endif // Y2019_CONTROL_LOOPS_SUPERSTRUCTURE_SUPERSTRUCTURE_H_