Implement superstructure class and tests
Change-Id: If5a2a296ada3dd625ad7eb74af106b36b36ab932
diff --git a/y2019/control_loops/superstructure/superstructure.h b/y2019/control_loops/superstructure/superstructure.h
index 0d6765e..22dbcd6 100644
--- a/y2019/control_loops/superstructure/superstructure.h
+++ b/y2019/control_loops/superstructure/superstructure.h
@@ -2,6 +2,9 @@
#define Y2019_CONTROL_LOOPS_SUPERSTRUCTURE_SUPERSTRUCTURE_H_
#include "aos/controls/control_loop.h"
+#include "frc971/control_loops/static_zeroing_single_dof_profiled_subsystem.h"
+#include "y2019/constants.h"
+#include "y2019/control_loops/superstructure/collision_avoidance.h"
#include "y2019/control_loops/superstructure/superstructure.q.h"
namespace y2019 {
@@ -16,14 +19,41 @@
const ::std::string &name =
".y2019.control_loops.superstructure.superstructure_queue");
+ using PotAndAbsoluteEncoderSubsystem =
+ ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystem<
+ ::frc971::zeroing::PotAndAbsoluteEncoderZeroingEstimator,
+ ::frc971::control_loops::PotAndAbsoluteEncoderProfiledJointStatus>;
+ using AbsoluteEncoderSubsystem =
+ ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystem<
+ ::frc971::zeroing::AbsoluteEncoderZeroingEstimator,
+ ::frc971::control_loops::AbsoluteEncoderProfiledJointStatus>;
+
+ const PotAndAbsoluteEncoderSubsystem &elevator() const {
+ return elevator_;
+ }
+ const PotAndAbsoluteEncoderSubsystem &wrist() const {
+ return wrist_;
+ }
+ const AbsoluteEncoderSubsystem &intake() const {
+ return intake_;
+ }
+ const PotAndAbsoluteEncoderSubsystem &stilts() const {
+ return stilts_;
+ }
+
protected:
- virtual void RunIteration(
- const SuperstructureQueue::Goal *unsafe_goal,
- const SuperstructureQueue::Position *position,
- SuperstructureQueue::Output *output,
- SuperstructureQueue::Status *status) override;
+ virtual void RunIteration(const SuperstructureQueue::Goal *unsafe_goal,
+ const SuperstructureQueue::Position *position,
+ SuperstructureQueue::Output *output,
+ SuperstructureQueue::Status *status) override;
private:
+ PotAndAbsoluteEncoderSubsystem elevator_;
+ PotAndAbsoluteEncoderSubsystem wrist_;
+ AbsoluteEncoderSubsystem intake_;
+ PotAndAbsoluteEncoderSubsystem stilts_;
+
+ CollisionAvoidance collision_avoidance_;
DISALLOW_COPY_AND_ASSIGN(Superstructure);
};