Bayley Wang
/
foc-ed_in_the_bot_compact
robot
DQMapper/DQMapper.h@186:c18db1e31da6, 2018-02-09 (annotated)
- Committer:
- bwang
- Date:
- Fri Feb 09 22:25:44 2018 +0000
- Revision:
- 186:c18db1e31da6
- Parent:
- 185:5c102874b490
- Child:
- 191:66861311bdcd
temp commit while working on moving definitions around
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 | 42:030e0ec4eac5 | 7 | class DQMapper { |
bwang | 42:030e0ec4eac5 | 8 | public: |
bwang | 42:030e0ec4eac5 | 9 | virtual void map(float torque_percent, float w, float *d, float *q) = 0; |
bwang | 42:030e0ec4eac5 | 10 | }; |
bwang | 42:030e0ec4eac5 | 11 | |
bwang | 42:030e0ec4eac5 | 12 | class QOnlyMapper : public DQMapper { |
bwang | 42:030e0ec4eac5 | 13 | public: |
bwang | 42:030e0ec4eac5 | 14 | QOnlyMapper(float kt, float tmax) {_kt = kt; _tmax = tmax;} |
bwang | 42:030e0ec4eac5 | 15 | virtual void map(float torque_percent, float w, float *d, float *q) {*d = 0; *q = torque_percent * _tmax / _kt;} |
bwang | 42:030e0ec4eac5 | 16 | private: |
bwang | 42:030e0ec4eac5 | 17 | float _kt; |
bwang | 42:030e0ec4eac5 | 18 | float _tmax; |
bwang | 42:030e0ec4eac5 | 19 | }; |
bwang | 42:030e0ec4eac5 | 20 | |
bwang | 44:3fd6a43b91f0 | 21 | class LinearNoFWMapper : public DQMapper { |
bwang | 44:3fd6a43b91f0 | 22 | public: |
bwang | 44:3fd6a43b91f0 | 23 | LinearNoFWMapper(float kt, float tmax, float lambda) {_kt = kt; _tmax = tmax; _lambda = lambda;} |
bwang | 44:3fd6a43b91f0 | 24 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 44:3fd6a43b91f0 | 25 | private: |
bwang | 44:3fd6a43b91f0 | 26 | float _kt; |
bwang | 44:3fd6a43b91f0 | 27 | float _tmax; |
bwang | 45:cf8ad81fb0f0 | 28 | float _lambda; |
bwang | 44:3fd6a43b91f0 | 29 | }; |
bwang | 44:3fd6a43b91f0 | 30 | |
bwang | 42:030e0ec4eac5 | 31 | class LutMapper : public DQMapper { |
bwang | 42:030e0ec4eac5 | 32 | public: |
bwang | 42:030e0ec4eac5 | 33 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 42:030e0ec4eac5 | 34 | }; |
bwang | 42:030e0ec4eac5 | 35 | |
bwang | 171:3f1d1792757c | 36 | class InterpolatingLutMapper : public DQMapper { |
bwang | 171:3f1d1792757c | 37 | public: |
bwang | 171:3f1d1792757c | 38 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 171:3f1d1792757c | 39 | private: |
bwang | 171:3f1d1792757c | 40 | static float lookup(short table[][COLUMNS], int row, int col); |
bwang | 171:3f1d1792757c | 41 | static float lookup(short *table, int index); |
bwang | 171:3f1d1792757c | 42 | static float interp(float a, float b, float eps); |
bwang | 171:3f1d1792757c | 43 | static float interp(float a, float b, float c, float eps_row, float eps_col); |
bwang | 171:3f1d1792757c | 44 | }; |
bwang | 171:3f1d1792757c | 45 | |
bwang | 98:1051c4103900 | 46 | class AngleMapper : public DQMapper { |
bwang | 98:1051c4103900 | 47 | public: |
bwang | 98:1051c4103900 | 48 | AngleMapper(float theta, float is) {_theta = theta; _is = is;} |
bwang | 98:1051c4103900 | 49 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 98:1051c4103900 | 50 | private: |
bwang | 98:1051c4103900 | 51 | float _is; |
bwang | 98:1051c4103900 | 52 | float _theta; |
bwang | 98:1051c4103900 | 53 | }; |
bwang | 98:1051c4103900 | 54 | |
bwang | 124:e70ca81676fc | 55 | class DirectMapper : public DQMapper { |
bwang | 124:e70ca81676fc | 56 | public: |
bwang | 124:e70ca81676fc | 57 | DirectMapper(float id, float iq) {_id = id; _iq = iq;} |
bwang | 124:e70ca81676fc | 58 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 124:e70ca81676fc | 59 | private: |
bwang | 124:e70ca81676fc | 60 | float _id, _iq; |
bwang | 124:e70ca81676fc | 61 | }; |
bwang | 124:e70ca81676fc | 62 | |
bwang | 124:e70ca81676fc | 63 | class SwapMapper : public DQMapper { |
bwang | 124:e70ca81676fc | 64 | public: |
bwang | 124:e70ca81676fc | 65 | SwapMapper(float id, float iq) {_id = id; _iq = iq;} |
bwang | 124:e70ca81676fc | 66 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 124:e70ca81676fc | 67 | private: |
bwang | 124:e70ca81676fc | 68 | float _id, _iq; |
bwang | 124:e70ca81676fc | 69 | }; |
bwang | 124:e70ca81676fc | 70 | |
bwang | 160:6948bb7bcabd | 71 | class AutoMapper : public DQMapper { |
bwang | 160:6948bb7bcabd | 72 | public: |
bwang | 160:6948bb7bcabd | 73 | AutoMapper(float phase_low, float phase_high, float steps, float is) |
bwang | 160:6948bb7bcabd | 74 | {_phase_low = phase_low; _phase_high = phase_high; _steps = steps; _is = is; _theta = _phase_low;} |
bwang | 160:6948bb7bcabd | 75 | virtual void map(float torque_percent, float w, float *d, float *q); |
bwang | 160:6948bb7bcabd | 76 | private: |
bwang | 160:6948bb7bcabd | 77 | float _phase_low, _phase_high, _steps, _is; |
bwang | 160:6948bb7bcabd | 78 | float _theta; |
bwang | 160:6948bb7bcabd | 79 | }; |
bwang | 160:6948bb7bcabd | 80 | |
bwang | 42:030e0ec4eac5 | 81 | #endif |