Backup 1

Revision:
0:02dd72d1d465
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Controller.h	Tue Apr 24 11:45:18 2018 +0000
@@ -0,0 +1,129 @@
+/*
+ * Controller.cpp
+ * Copyright (c) 2018, ZHAW
+ * All rights reserved.
+ *
+ *  Created on: 27.03.2018
+ *      Author: BaBoRo Development Team
+ */
+
+#ifndef CONTROLLER_H_
+#define CONTROLLER_H_
+
+#include <stdint.h>
+#include "mbed.h"
+#include "EncoderCounter.h"
+#include "IMU.h"
+#include "LowpassFilter.h"
+#include "Motion.h"
+
+/**
+ * controller class
+ */
+class Controller {
+    
+    public:
+        
+        //static const float      TRANSLATIONAL_PROFILE_VELOCITY;
+        //static const float      ROTATIONAL_PROFILE_VELOCITY;
+        static const float        ALPHA;
+        static const float        RB;
+        static const float        RW;
+        static const float        PI;
+        static const float        SQRT_3;
+        static const float        LOWPASS_FILTER_FREQUENCY;
+        static const float        COUNTS_PER_TURN;
+        static const float        KI;
+        static const float        MIN_DUTY_CYCLE;
+        static const float        MAX_DUTY_CYCLE;
+        static const float        MAX_ACC_M;
+        
+                    Controller(PwmOut& pwm0, PwmOut& pwm1, PwmOut& pwm2, EncoderCounter& counter1, EncoderCounter& counter2, EncoderCounter& counter3, IMU& imu);
+        virtual     ~Controller();
+        void        setGammaX(float gammaX);
+        void        setGammaY(float gammaY);
+        void        setGammaZ(float gammaZ);
+        void        setPhiX(float phiX);
+        void        setPhiY(float phiY);
+        void        setX(float x);
+        void        setY(float y);
+        
+        float       getPhiX();
+        float       getPhiY();
+        float       getX();
+        float       getY();
+
+        
+    private:
+        
+        static const uint32_t   STACK_SIZE = 4096;  // stack size of thread, given in [bytes]
+        static const float      PERIOD;             // the period of the timer interrupt, given in [s]
+        
+        PwmOut&             pwm0;
+        PwmOut&             pwm1;
+        PwmOut&             pwm2;
+        
+        EncoderCounter&     counter1;
+        EncoderCounter&     counter2;
+        EncoderCounter&     counter3;
+        
+        float               gammaXref;
+        float               gammaYref;
+        float               gammaZref;
+        float               phiXref;
+        float               phiYref;
+        
+        float               gammaX;
+        float               gammaY;
+        float               gammaZ;
+        float               phiX;
+        float               phiY;
+        float               x;
+        float               y;
+        
+        float               d_gammaX;
+        float               d_gammaY;
+        float               d_gammaZ;
+        float               d_phiX;
+        float               d_phiY;
+        
+        LowpassFilter       speedFilter1;
+        LowpassFilter       speedFilter2;
+        LowpassFilter       speedFilter3;
+        
+        LowpassFilter       d_phiXFilter;
+        LowpassFilter       d_phiYFilter;
+        
+        LowpassFilter       gammaXFilter;
+        LowpassFilter       gammaYFilter;
+        LowpassFilter       d_gammaXFilter;
+        LowpassFilter       d_gammaYFilter;
+        
+        LowpassFilter       M1Filter;
+        LowpassFilter       M2Filter;
+        LowpassFilter       M3Filter;
+        
+        float               previousValueCounter1;
+        float               previousValueCounter2;
+        float               previousValueCounter3;
+        float               actualSpeed1;
+        float               actualSpeed2;
+        float               actualSpeed3;
+        
+        Motion              M1motion;
+        Motion              M2motion;
+        Motion              M3motion;
+        Motion              d_phiXMotion;
+        Motion              d_phiYMotion;
+        
+        IMU&                imu;
+        //Signal              signal;
+        Thread              thread;
+        //Ticker              ticker;
+        Mutex               mutex;      // mutex to lock critical sections
+        
+        //void        sendSignal();
+        void        run();
+};
+
+#endif /* CONTROLLER_H_ */