robot

Dependencies:   FastPWM3 mbed

Committer:
bwang
Date:
Tue Nov 13 17:46:23 2018 +0000
Revision:
252:38644631ed97
Parent:
192:3152a86cd108
11/13/2018 12:45 - hitting <return> on empty line prints "\r>", so that hitting enter after intially connecting to the controller generates a prompt

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 191:66861311bdcd 4 #include "tables.h"
bwang 185:5c102874b490 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