robot

Dependencies:   FastPWM3 mbed

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?

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