robot

Dependencies:   FastPWM3 mbed

Committer:
bwang
Date:
Sat Jul 01 21:16:33 2017 +0000
Revision:
160:6948bb7bcabd
Parent:
124:e70ca81676fc
Child:
171:3f1d1792757c
added AutoMapper, AutoThrottleMapper classes for automated stall testing

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 160:6948bb7bcabd 58 class AutoMapper : public DQMapper {
bwang 160:6948bb7bcabd 59 public:
bwang 160:6948bb7bcabd 60 AutoMapper(float phase_low, float phase_high, float steps, float is)
bwang 160:6948bb7bcabd 61 {_phase_low = phase_low; _phase_high = phase_high; _steps = steps; _is = is; _theta = _phase_low;}
bwang 160:6948bb7bcabd 62 virtual void map(float torque_percent, float w, float *d, float *q);
bwang 160:6948bb7bcabd 63 private:
bwang 160:6948bb7bcabd 64 float _phase_low, _phase_high, _steps, _is;
bwang 160:6948bb7bcabd 65 float _theta;
bwang 160:6948bb7bcabd 66 };
bwang 160:6948bb7bcabd 67
bwang 42:030e0ec4eac5 68 #endif