DERPS

Dependencies:   BMP280 BNO055_fusion PowerControl mbed

Fork of STRAIGHT_DRIVE_NO_SEP by Antoine Laurens

Committer:
12104404
Date:
Wed Apr 13 03:14:43 2016 +0000
Revision:
27:fb1298d35bd1
Parent:
26:0ea6a550a99d
Child:
29:e8ef4a2e628d
gravity compensation;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
12104404 6:0602a9e8118b 1 #ifndef LOCOMOTION_H
12104404 6:0602a9e8118b 2 #define LOCOMOTION_H
12104404 26:0ea6a550a99d 3
12104404 6:0602a9e8118b 4 #include "mbed.h"
12104404 17:2f89826b5679 5 #include "LOCALIZE.h"
12104404 27:fb1298d35bd1 6 #include "math.h"
12104404 26:0ea6a550a99d 7
12104404 27:fb1298d35bd1 8 #define SPEED_TURN_MIN 0.25//0.15
12104404 27:fb1298d35bd1 9 #define SPEED_TURN_MAX 0.50//0.45
12104404 25:f3bf8351bbd4 10 #define Y_BIAS_MIN 0.50
12104404 25:f3bf8351bbd4 11 #define Y_BIAS_MAX 1.00
12104404 25:f3bf8351bbd4 12 #define SPEED_X_MIN 0.07
12104404 25:f3bf8351bbd4 13 #define SPEED_X_MAX 0.17
12104404 27:fb1298d35bd1 14 #define GAIN_GRAVITY 0.7
12104404 27:fb1298d35bd1 15 #define M_PI 3.1415926535897932384
12104404 26:0ea6a550a99d 16
12104404 25:f3bf8351bbd4 17 #define X_INCREASE 1
12104404 25:f3bf8351bbd4 18 #define X_DECREASE 2
12104404 25:f3bf8351bbd4 19 #define X_BACKWARDS 3
12104404 26:0ea6a550a99d 20 #define ROTATE_1 4
12104404 26:0ea6a550a99d 21 #define ROTATE_2 5
12104404 26:0ea6a550a99d 22 #define BACKOFF 10
12104404 26:0ea6a550a99d 23 #define X_NEAR_GOAL 0
12104404 26:0ea6a550a99d 24 #define X_FAR_GOAL 90
12104404 26:0ea6a550a99d 25 #define Y_INCREMENT 7
12104404 26:0ea6a550a99d 26
12104404 15:7729da55873a 27 enum {
12104404 15:7729da55873a 28 ANGLE_TURN = 0,
12104404 15:7729da55873a 29 ANGLE_BIAS = 1,
12104404 15:7729da55873a 30 };
12104404 26:0ea6a550a99d 31
12104404 6:0602a9e8118b 32 class LOCOMOTION
12104404 6:0602a9e8118b 33 {
12104404 6:0602a9e8118b 34 public:
12104404 24:fb1f083ebd62 35 LOCOMOTION(PinName en, PinName motor1F, PinName motor1B,PinName motor2F, PinName motor2B, PinName forward1, PinName forward2, DigitalOut& led1, DigitalOut& led2, DigitalOut& led3, DigitalOut& led4);
12104404 23:455f7da3dd7a 36 DigitalOut _en;
12104404 15:7729da55873a 37 PwmOut _m1f;
12104404 15:7729da55873a 38 PwmOut _m1b;
12104404 15:7729da55873a 39 PwmOut _m2f;
12104404 15:7729da55873a 40 PwmOut _m2b;
12104404 15:7729da55873a 41 DigitalOut _m1dir;
12104404 15:7729da55873a 42 DigitalOut _m2dir;
12104404 24:fb1f083ebd62 43 DigitalOut _led1;
12104404 24:fb1f083ebd62 44 DigitalOut _led2;
12104404 24:fb1f083ebd62 45 DigitalOut _led3;
12104404 24:fb1f083ebd62 46 DigitalOut _led4;
12104404 23:455f7da3dd7a 47 void eStop(void);
12104404 26:0ea6a550a99d 48 void mStop(void);
12104404 18:f9012e93edb8 49 bool setXPos(int target, int current, int error, int angle);
12104404 25:f3bf8351bbd4 50 bool setYBias(int target, int current, int error, int angle);
12104404 15:7729da55873a 51 bool setAngle(int target, int current, int error, int mode);
12104404 25:f3bf8351bbd4 52
12104404 26:0ea6a550a99d 53 void setXstate(int *xCurrState, int *xTarget,bool xGood,bool angleGood,int *angleGoal,int *angleTol );
12104404 25:f3bf8351bbd4 54 void setAngleTol(int *angleTol,bool yGood, bool xGood);
12104404 25:f3bf8351bbd4 55 void setYgoal(bool xGood,bool angleGood,bool yGood,int *yTarget);
12104404 25:f3bf8351bbd4 56 void check_xya(bool *xGood,bool *yGood,bool *angleGood, int xGoal,int angleGoal,int yGoal,LOCALIZE_xya xya,int xErr, int yErr,int angleErr);
12104404 27:fb1298d35bd1 57 void moveF(int angle);
12104404 27:fb1298d35bd1 58 void moveB(void);
12104404 27:fb1298d35bd1 59
12104404 15:7729da55873a 60 protected:
12104404 17:2f89826b5679 61 float s;
12104404 25:f3bf8351bbd4 62 void setMotors(float x);
12104404 27:fb1298d35bd1 63 void setMotors12(float x, float y);
12104404 23:455f7da3dd7a 64 int wrap(int num);
12104404 27:fb1298d35bd1 65 inline float compG(float speed, bool dir, int angle);
12104404 19:2dd81b864e14 66
12104404 6:0602a9e8118b 67 };
12104404 6:0602a9e8118b 68 #endif