robot

Dependencies:   FastPWM3 mbed

Committer:
bwang
Date:
Thu May 04 17:35:10 2017 +0000
Revision:
155:7c6005933d4c
Parent:
124:e70ca81676fc
Child:
160:6948bb7bcabd
05/04/2017 13:34 - changed logic in PwmIn::handle_fall, which no longer resets timer on invalid edges

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 42:030e0ec4eac5 1 #ifndef __DQ_MAPPER_H
bwang 42:030e0ec4eac5 2 #define __DQ_MAPPER_H
bwang 42:030e0ec4eac5 3
bwang 42:030e0ec4eac5 4 class DQMapper {
bwang 42:030e0ec4eac5 5 public:
bwang 42:030e0ec4eac5 6 virtual void map(float torque_percent, float w, float *d, float *q) = 0;
bwang 42:030e0ec4eac5 7 };
bwang 42:030e0ec4eac5 8
bwang 42:030e0ec4eac5 9 class QOnlyMapper : public DQMapper {
bwang 42:030e0ec4eac5 10 public:
bwang 42:030e0ec4eac5 11 QOnlyMapper(float kt, float tmax) {_kt = kt; _tmax = tmax;}
bwang 42:030e0ec4eac5 12 virtual void map(float torque_percent, float w, float *d, float *q) {*d = 0; *q = torque_percent * _tmax / _kt;}
bwang 42:030e0ec4eac5 13 private:
bwang 42:030e0ec4eac5 14 float _kt;
bwang 42:030e0ec4eac5 15 float _tmax;
bwang 42:030e0ec4eac5 16 };
bwang 42:030e0ec4eac5 17
bwang 44:3fd6a43b91f0 18 class LinearNoFWMapper : public DQMapper {
bwang 44:3fd6a43b91f0 19 public:
bwang 44:3fd6a43b91f0 20 LinearNoFWMapper(float kt, float tmax, float lambda) {_kt = kt; _tmax = tmax; _lambda = lambda;}
bwang 44:3fd6a43b91f0 21 virtual void map(float torque_percent, float w, float *d, float *q);
bwang 44:3fd6a43b91f0 22 private:
bwang 44:3fd6a43b91f0 23 float _kt;
bwang 44:3fd6a43b91f0 24 float _tmax;
bwang 45:cf8ad81fb0f0 25 float _lambda;
bwang 44:3fd6a43b91f0 26 };
bwang 44:3fd6a43b91f0 27
bwang 42:030e0ec4eac5 28 class LutMapper : public DQMapper {
bwang 42:030e0ec4eac5 29 public:
bwang 42:030e0ec4eac5 30 virtual void map(float torque_percent, float w, float *d, float *q);
bwang 42:030e0ec4eac5 31 };
bwang 42:030e0ec4eac5 32
bwang 98:1051c4103900 33 class AngleMapper : public DQMapper {
bwang 98:1051c4103900 34 public:
bwang 98:1051c4103900 35 AngleMapper(float theta, float is) {_theta = theta; _is = is;}
bwang 98:1051c4103900 36 virtual void map(float torque_percent, float w, float *d, float *q);
bwang 98:1051c4103900 37 private:
bwang 98:1051c4103900 38 float _is;
bwang 98:1051c4103900 39 float _theta;
bwang 98:1051c4103900 40 };
bwang 98:1051c4103900 41
bwang 124:e70ca81676fc 42 class DirectMapper : public DQMapper {
bwang 124:e70ca81676fc 43 public:
bwang 124:e70ca81676fc 44 DirectMapper(float id, float iq) {_id = id; _iq = iq;}
bwang 124:e70ca81676fc 45 virtual void map(float torque_percent, float w, float *d, float *q);
bwang 124:e70ca81676fc 46 private:
bwang 124:e70ca81676fc 47 float _id, _iq;
bwang 124:e70ca81676fc 48 };
bwang 124:e70ca81676fc 49
bwang 124:e70ca81676fc 50 class SwapMapper : public DQMapper {
bwang 124:e70ca81676fc 51 public:
bwang 124:e70ca81676fc 52 SwapMapper(float id, float iq) {_id = id; _iq = iq;}
bwang 124:e70ca81676fc 53 virtual void map(float torque_percent, float w, float *d, float *q);
bwang 124:e70ca81676fc 54 private:
bwang 124:e70ca81676fc 55 float _id, _iq;
bwang 124:e70ca81676fc 56 };
bwang 124:e70ca81676fc 57
bwang 42:030e0ec4eac5 58 #endif