Marco Oehler / Mbed 2 deprecated Lab2

Dependencies:   mbed

Revision:
0:1a972ed770da
diff -r 000000000000 -r 1a972ed770da Controller.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Controller.h	Mon Mar 09 16:23:04 2020 +0000
@@ -0,0 +1,73 @@
+/*
+ * Controller.h
+ * Copyright (c) 2020, ZHAW
+ * All rights reserved.
+ */
+
+#ifndef CONTROLLER_H_
+#define CONTROLLER_H_
+
+#include <cstdlib>
+#include <mbed.h>
+#include "EncoderCounter.h"
+#include "Motion.h"
+#include "LowpassFilter.h"
+
+/**
+ * This class implements a controller that regulates the
+ * speed of the two motors of the ROME2 mobile robot.
+ */
+class Controller {
+    
+    public:
+        
+                Controller(PwmOut& pwmLeft, PwmOut& pwmRight, EncoderCounter& counterLeft, EncoderCounter& counterRight);
+        virtual ~Controller();
+        void    setTranslationalVelocity(float velocity);
+        void    setRotationalVelocity(float velocity);
+        float   getActualTranslationalVelocity();
+        float   getActualRotationalVelocity();
+        void    setDesiredSpeedLeft(float desiredSpeedLeft);
+        void    setDesiredSpeedRight(float desiredSpeedRight);
+        float   getActualSpeedLeft();
+        float   getActualSpeedRight();
+        
+  private:
+        
+        static const float  PERIOD;
+        static const float  PI;
+        static const float  WHEEL_DISTANCE;
+        static const float  WHEEL_RADIUS;
+        static const float  COUNTS_PER_TURN;
+        static const float  LOWPASS_FILTER_FREQUENCY;
+        static const float  KN;
+        static const float  KP;
+        static const float  MAX_VOLTAGE;
+        static const float  MIN_DUTY_CYCLE;
+        static const float  MAX_DUTY_CYCLE;
+
+        PwmOut&             pwmLeft;
+        PwmOut&             pwmRight;
+        EncoderCounter&     counterLeft;
+        EncoderCounter&     counterRight;
+        Motion              translationalMotion;
+        Motion              rotationalMotion;
+        float               translationalVelocity;
+        float               rotationalVelocity;
+        float               actualTranslationalVelocity;
+        float               actualRotationalVelocity;
+        short               previousValueCounterLeft;
+        short               previousValueCounterRight;
+        LowpassFilter       speedLeftFilter;
+        LowpassFilter       speedRightFilter;
+        float               desiredSpeedLeft;
+        float               desiredSpeedRight;
+        float               actualSpeedLeft;
+        float               actualSpeedRight;
+        Ticker              ticker;
+        
+        void    run();
+};
+
+#endif /* CONTROLLER_H_ */
+