Bayley Wang
/
foc-ed_in_the_bot_compact
robot
DQMapper/DQMapper.h@185:5c102874b490, 2018-02-09 (annotated)
- Committer:
- bwang
- Date:
- Fri Feb 09 22:19:52 2018 +0000
- Revision:
- 185:5c102874b490
- Parent:
- 171:3f1d1792757c
- Child:
- 186:c18db1e31da6
moved all the hard-coded values to defaults.h
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bwang | 42:030e0ec4eac5 | 1 | #ifndef __DQ_MAPPER_H |
bwang | 42:030e0ec4eac5 | 2 | #define __DQ_MAPPER_H |
bwang | 42:030e0ec4eac5 | 3 | |
bwang | 185:5c102874b490 | 4 | #include "defaults.h" |
bwang | 185:5c102874b490 | 5 | #include "derived.h" |
bwang | 185:5c102874b490 | 6 | |
bwang | 185:5c102874b490 | 7 | //#include "config_table.h" |
bwang | 171:3f1d1792757c | 8 | |
bwang | 42:030e0ec4eac5 | 9 | class DQMapper { |
bwang | 42:030e0ec4eac5 | 10 | public: |
bwang | 42:030e0ec4eac5 | 11 | virtual void map(float torque_percent, float w, float *d, float *q) = 0; |
bwang | 42:030e0ec4eac5 | 12 | }; |
bwang | 42:030e0ec4eac5 | 13 | |
bwang | 42:030e0ec4eac5 | 14 | class QOnlyMapper : public DQMapper { |
bwang | 42:030e0ec4eac5 | 15 | public: |
bwang | 42:030e0ec4eac5 | 16 | QOnlyMapper(float kt, float tmax) {_kt = kt; _tmax = tmax;} |
bwang | 42:030e0ec4eac5 | 17 | virtual void map(float torque_percent, float w, float *d, float *q) {*d = 0; *q = torque_percent * _tmax / _kt;} |
bwang | 42:030e0ec4eac5 | 18 | private: |
bwang | 42:030e0ec4eac5 | 19 | float _kt; |
bwang | 42:030e0ec4eac5 | 20 | float _tmax; |
bwang | 42:030e0ec4eac5 | 21 | }; |
bwang | 42:030e0ec4eac5 | 22 | |
bwang | 44:3fd6a43b91f0 | 23 | class LinearNoFWMapper : public DQMapper { |
bwang | 44:3fd6a43b91f0 | 24 | public: |
bwang | 44:3fd6a43b91f0 | 25 | LinearNoFWMapper(float kt, float tmax, float lambda) {_kt = kt; _tmax = tmax; _lambda = lambda;} |
bwang | 44:3fd6a43b91f0 | 26 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 44:3fd6a43b91f0 | 27 | private: |
bwang | 44:3fd6a43b91f0 | 28 | float _kt; |
bwang | 44:3fd6a43b91f0 | 29 | float _tmax; |
bwang | 45:cf8ad81fb0f0 | 30 | float _lambda; |
bwang | 44:3fd6a43b91f0 | 31 | }; |
bwang | 44:3fd6a43b91f0 | 32 | |
bwang | 42:030e0ec4eac5 | 33 | class LutMapper : public DQMapper { |
bwang | 42:030e0ec4eac5 | 34 | public: |
bwang | 42:030e0ec4eac5 | 35 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 42:030e0ec4eac5 | 36 | }; |
bwang | 42:030e0ec4eac5 | 37 | |
bwang | 171:3f1d1792757c | 38 | class InterpolatingLutMapper : public DQMapper { |
bwang | 171:3f1d1792757c | 39 | public: |
bwang | 171:3f1d1792757c | 40 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 171:3f1d1792757c | 41 | private: |
bwang | 171:3f1d1792757c | 42 | static float lookup(short table[][COLUMNS], int row, int col); |
bwang | 171:3f1d1792757c | 43 | static float lookup(short *table, int index); |
bwang | 171:3f1d1792757c | 44 | static float interp(float a, float b, float eps); |
bwang | 171:3f1d1792757c | 45 | static float interp(float a, float b, float c, float eps_row, float eps_col); |
bwang | 171:3f1d1792757c | 46 | }; |
bwang | 171:3f1d1792757c | 47 | |
bwang | 98:1051c4103900 | 48 | class AngleMapper : public DQMapper { |
bwang | 98:1051c4103900 | 49 | public: |
bwang | 98:1051c4103900 | 50 | AngleMapper(float theta, float is) {_theta = theta; _is = is;} |
bwang | 98:1051c4103900 | 51 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 98:1051c4103900 | 52 | private: |
bwang | 98:1051c4103900 | 53 | float _is; |
bwang | 98:1051c4103900 | 54 | float _theta; |
bwang | 98:1051c4103900 | 55 | }; |
bwang | 98:1051c4103900 | 56 | |
bwang | 124:e70ca81676fc | 57 | class DirectMapper : public DQMapper { |
bwang | 124:e70ca81676fc | 58 | public: |
bwang | 124:e70ca81676fc | 59 | DirectMapper(float id, float iq) {_id = id; _iq = iq;} |
bwang | 124:e70ca81676fc | 60 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 124:e70ca81676fc | 61 | private: |
bwang | 124:e70ca81676fc | 62 | float _id, _iq; |
bwang | 124:e70ca81676fc | 63 | }; |
bwang | 124:e70ca81676fc | 64 | |
bwang | 124:e70ca81676fc | 65 | class SwapMapper : public DQMapper { |
bwang | 124:e70ca81676fc | 66 | public: |
bwang | 124:e70ca81676fc | 67 | SwapMapper(float id, float iq) {_id = id; _iq = iq;} |
bwang | 124:e70ca81676fc | 68 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 124:e70ca81676fc | 69 | private: |
bwang | 124:e70ca81676fc | 70 | float _id, _iq; |
bwang | 124:e70ca81676fc | 71 | }; |
bwang | 124:e70ca81676fc | 72 | |
bwang | 160:6948bb7bcabd | 73 | class AutoMapper : public DQMapper { |
bwang | 160:6948bb7bcabd | 74 | public: |
bwang | 160:6948bb7bcabd | 75 | AutoMapper(float phase_low, float phase_high, float steps, float is) |
bwang | 160:6948bb7bcabd | 76 | {_phase_low = phase_low; _phase_high = phase_high; _steps = steps; _is = is; _theta = _phase_low;} |
bwang | 160:6948bb7bcabd | 77 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 160:6948bb7bcabd | 78 | private: |
bwang | 160:6948bb7bcabd | 79 | float _phase_low, _phase_high, _steps, _is; |
bwang | 160:6948bb7bcabd | 80 | float _theta; |
bwang | 160:6948bb7bcabd | 81 | }; |
bwang | 160:6948bb7bcabd | 82 | |
bwang | 42:030e0ec4eac5 | 83 | #endif |