ROME_Praktikum / Mbed 2 deprecated Rome_P_3

Dependencies:   mbed

Committer:
Jacqueline
Date:
Tue Mar 31 11:58:30 2020 +0000
Revision:
0:20ec9d702676
Praktikum_3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jacqueline 0:20ec9d702676 1 /*
Jacqueline 0:20ec9d702676 2 * Controller.h
Jacqueline 0:20ec9d702676 3 * Copyright (c) 2020, ZHAW
Jacqueline 0:20ec9d702676 4 * All rights reserved.
Jacqueline 0:20ec9d702676 5 */
Jacqueline 0:20ec9d702676 6
Jacqueline 0:20ec9d702676 7 #ifndef CONTROLLER_H_
Jacqueline 0:20ec9d702676 8 #define CONTROLLER_H_
Jacqueline 0:20ec9d702676 9
Jacqueline 0:20ec9d702676 10 #include <cstdlib>
Jacqueline 0:20ec9d702676 11 #include <mbed.h>
Jacqueline 0:20ec9d702676 12 #include "EncoderCounter.h"
Jacqueline 0:20ec9d702676 13 #include "Motion.h"
Jacqueline 0:20ec9d702676 14 #include "LowpassFilter.h"
Jacqueline 0:20ec9d702676 15
Jacqueline 0:20ec9d702676 16 /**
Jacqueline 0:20ec9d702676 17 * This class implements a controller that regulates the
Jacqueline 0:20ec9d702676 18 * speed of the two motors of the ROME2 mobile robot.
Jacqueline 0:20ec9d702676 19 */
Jacqueline 0:20ec9d702676 20 class Controller {
Jacqueline 0:20ec9d702676 21
Jacqueline 0:20ec9d702676 22 public:
Jacqueline 0:20ec9d702676 23
Jacqueline 0:20ec9d702676 24 Controller(PwmOut& pwmLeft, PwmOut& pwmRight, EncoderCounter& counterLeft, EncoderCounter& counterRight);
Jacqueline 0:20ec9d702676 25 virtual ~Controller();
Jacqueline 0:20ec9d702676 26 void setTranslationalVelocity(float velocity);
Jacqueline 0:20ec9d702676 27 void setRotationalVelocity(float velocity);
Jacqueline 0:20ec9d702676 28 float getActualTranslationalVelocity();
Jacqueline 0:20ec9d702676 29 float getActualRotationalVelocity();
Jacqueline 0:20ec9d702676 30 void setDesiredSpeedLeft(float desiredSpeedLeft);
Jacqueline 0:20ec9d702676 31 void setDesiredSpeedRight(float desiredSpeedRight);
Jacqueline 0:20ec9d702676 32 float getActualSpeedLeft();
Jacqueline 0:20ec9d702676 33 float getActualSpeedRight();
Jacqueline 0:20ec9d702676 34 void setX(float x);
Jacqueline 0:20ec9d702676 35 float getX();
Jacqueline 0:20ec9d702676 36 void setY(float y);
Jacqueline 0:20ec9d702676 37 float getY();
Jacqueline 0:20ec9d702676 38 void setAlpha(float alpha);
Jacqueline 0:20ec9d702676 39 float getAlpha();
Jacqueline 0:20ec9d702676 40
Jacqueline 0:20ec9d702676 41 private:
Jacqueline 0:20ec9d702676 42
Jacqueline 0:20ec9d702676 43 static const float PERIOD;
Jacqueline 0:20ec9d702676 44 static const float PI;
Jacqueline 0:20ec9d702676 45 static const float WHEEL_DISTANCE;
Jacqueline 0:20ec9d702676 46 static const float WHEEL_RADIUS;
Jacqueline 0:20ec9d702676 47 static const float COUNTS_PER_TURN;
Jacqueline 0:20ec9d702676 48 static const float LOWPASS_FILTER_FREQUENCY;
Jacqueline 0:20ec9d702676 49 static const float KN;
Jacqueline 0:20ec9d702676 50 static const float KP;
Jacqueline 0:20ec9d702676 51 static const float MAX_VOLTAGE;
Jacqueline 0:20ec9d702676 52 static const float MIN_DUTY_CYCLE;
Jacqueline 0:20ec9d702676 53 static const float MAX_DUTY_CYCLE;
Jacqueline 0:20ec9d702676 54
Jacqueline 0:20ec9d702676 55 PwmOut& pwmLeft;
Jacqueline 0:20ec9d702676 56 PwmOut& pwmRight;
Jacqueline 0:20ec9d702676 57 EncoderCounter& counterLeft;
Jacqueline 0:20ec9d702676 58 EncoderCounter& counterRight;
Jacqueline 0:20ec9d702676 59 Motion translationalMotion;
Jacqueline 0:20ec9d702676 60 Motion rotationalMotion;
Jacqueline 0:20ec9d702676 61 float translationalVelocity;
Jacqueline 0:20ec9d702676 62 float rotationalVelocity;
Jacqueline 0:20ec9d702676 63 float actualTranslationalVelocity;
Jacqueline 0:20ec9d702676 64 float actualRotationalVelocity;
Jacqueline 0:20ec9d702676 65 short previousValueCounterLeft;
Jacqueline 0:20ec9d702676 66 short previousValueCounterRight;
Jacqueline 0:20ec9d702676 67 LowpassFilter speedLeftFilter;
Jacqueline 0:20ec9d702676 68 LowpassFilter speedRightFilter;
Jacqueline 0:20ec9d702676 69 float desiredSpeedLeft;
Jacqueline 0:20ec9d702676 70 float desiredSpeedRight;
Jacqueline 0:20ec9d702676 71 float actualSpeedLeft;
Jacqueline 0:20ec9d702676 72 float actualSpeedRight;
Jacqueline 0:20ec9d702676 73 float x;
Jacqueline 0:20ec9d702676 74 float y;
Jacqueline 0:20ec9d702676 75 float alpha;
Jacqueline 0:20ec9d702676 76 Ticker ticker;
Jacqueline 0:20ec9d702676 77
Jacqueline 0:20ec9d702676 78 void run();
Jacqueline 0:20ec9d702676 79 };
Jacqueline 0:20ec9d702676 80
Jacqueline 0:20ec9d702676 81 #endif /* CONTROLLER_H_ */
Jacqueline 0:20ec9d702676 82