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