robot

Dependencies:   FastPWM3 mbed

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?

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 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