inkl Line Sensor

Dependencies:   mbed

Fork of Roboshark_V2 by Roboshark

Committer:
ahlervin
Date:
Thu Apr 26 05:58:07 2018 +0000
Revision:
5:e715d157ced5
Parent:
0:6d0671ae4648
bug fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jacqueline 0:6d0671ae4648 1 #ifndef CONTROLLER_H_
Jacqueline 0:6d0671ae4648 2 #define CONTROLLER_H_
Jacqueline 0:6d0671ae4648 3 #include <cstdlib>
Jacqueline 0:6d0671ae4648 4 #include <mbed.h>
Jacqueline 0:6d0671ae4648 5 #include "EncoderCounter.h"
Jacqueline 0:6d0671ae4648 6 #include "LowpassFilter.h"
Jacqueline 0:6d0671ae4648 7
Jacqueline 0:6d0671ae4648 8 class Controller
Jacqueline 0:6d0671ae4648 9 {
Jacqueline 0:6d0671ae4648 10
Jacqueline 0:6d0671ae4648 11 public:
Jacqueline 0:6d0671ae4648 12
Jacqueline 0:6d0671ae4648 13 Controller(PwmOut& pwmLeft, PwmOut& pwmRight,
Jacqueline 0:6d0671ae4648 14 EncoderCounter& counterLeft, EncoderCounter& counterRight);
Jacqueline 0:6d0671ae4648 15
Jacqueline 0:6d0671ae4648 16 virtual ~Controller();
Jacqueline 0:6d0671ae4648 17 void setDesiredSpeedLeft(float desiredSpeedLeft);
Jacqueline 0:6d0671ae4648 18 void setDesiredSpeedRight(float desiredSpeedRight);
Jacqueline 0:6d0671ae4648 19 float getSpeedLeft();
Jacqueline 0:6d0671ae4648 20 float getSpeedRight();
Jacqueline 0:6d0671ae4648 21 float getIntegralLeft();
Jacqueline 0:6d0671ae4648 22 float getIntegralRight();
Jacqueline 0:6d0671ae4648 23 float getProportionalLeft();
Jacqueline 0:6d0671ae4648 24 float getProportionalRight();
Jacqueline 0:6d0671ae4648 25
Jacqueline 0:6d0671ae4648 26 private:
Jacqueline 0:6d0671ae4648 27
Jacqueline 0:6d0671ae4648 28 static const float PERIOD;
Jacqueline 0:6d0671ae4648 29 static const float COUNTS_PER_TURN;
Jacqueline 0:6d0671ae4648 30 static const float LOWPASS_FILTER_FREQUENCY;
Jacqueline 0:6d0671ae4648 31 static const float KN;
Jacqueline 0:6d0671ae4648 32 static const float KP;
Jacqueline 0:6d0671ae4648 33 static const float KI;
Jacqueline 0:6d0671ae4648 34 static const float I_MAX;
Jacqueline 0:6d0671ae4648 35 static const float MAX_VOLTAGE;
Jacqueline 0:6d0671ae4648 36 static const float MIN_DUTY_CYCLE;
Jacqueline 0:6d0671ae4648 37 static const float MAX_DUTY_CYCLE;
Jacqueline 0:6d0671ae4648 38
Jacqueline 0:6d0671ae4648 39 PwmOut& pwmLeft;
Jacqueline 0:6d0671ae4648 40 PwmOut& pwmRight;
Jacqueline 0:6d0671ae4648 41 EncoderCounter& counterLeft;
Jacqueline 0:6d0671ae4648 42 EncoderCounter& counterRight;
Jacqueline 0:6d0671ae4648 43 short previousValueCounterLeft;
Jacqueline 0:6d0671ae4648 44 short previousValueCounterRight;
Jacqueline 0:6d0671ae4648 45 LowpassFilter speedLeftFilter;
Jacqueline 0:6d0671ae4648 46 LowpassFilter speedRightFilter;
Jacqueline 0:6d0671ae4648 47 float desiredSpeedLeft;
Jacqueline 0:6d0671ae4648 48 float desiredSpeedRight;
Jacqueline 0:6d0671ae4648 49 float actualSpeedLeft;
Jacqueline 0:6d0671ae4648 50 float actualSpeedRight;
Jacqueline 0:6d0671ae4648 51 float iSumLeft;
Jacqueline 0:6d0671ae4648 52 float iSumRight;
Jacqueline 0:6d0671ae4648 53 Ticker ticker;
Jacqueline 0:6d0671ae4648 54
Jacqueline 0:6d0671ae4648 55 void run();
Jacqueline 0:6d0671ae4648 56
Jacqueline 0:6d0671ae4648 57 };
Jacqueline 0:6d0671ae4648 58
Jacqueline 0:6d0671ae4648 59 #endif /* CONTROLLER_H_ */
Jacqueline 0:6d0671ae4648 60
Jacqueline 0:6d0671ae4648 61
Jacqueline 0:6d0671ae4648 62
Jacqueline 0:6d0671ae4648 63
Jacqueline 0:6d0671ae4648 64
Jacqueline 0:6d0671ae4648 65
Jacqueline 0:6d0671ae4648 66