ROME2 - TI / Mbed 2 deprecated ROME2 - Praktikum

Dependencies:   mbed

Committer:
solcager
Date:
Fri Mar 31 11:00:19 2017 +0000
Revision:
1:08ca9b208045
P3

Who changed what in which revision?

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