robot

Dependencies:   FastPWM3 mbed

Committer:
bwang
Date:
Sat Jul 01 21:16:33 2017 +0000
Revision:
160:6948bb7bcabd
Parent:
110:c66f359b6932
Child:
174:3872516b0d04
added AutoMapper, AutoThrottleMapper classes for automated stall testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 42:030e0ec4eac5 1 #ifndef __THROTTLE_MAPPER_H
bwang 42:030e0ec4eac5 2 #define __THROTTLE_MAPPER_H
bwang 42:030e0ec4eac5 3
bwang 42:030e0ec4eac5 4 class ThrottleMapper {
bwang 42:030e0ec4eac5 5 public:
bwang 42:030e0ec4eac5 6 virtual float map(float throttle, float w) = 0;
bwang 42:030e0ec4eac5 7 };
bwang 42:030e0ec4eac5 8
bwang 42:030e0ec4eac5 9 class NullThrottleMapper : public ThrottleMapper {
bwang 42:030e0ec4eac5 10 public:
bwang 110:c66f359b6932 11 virtual float map(float throttle, float w) {if (throttle >= 0.0f) return throttle; return 0.0f;}
bwang 42:030e0ec4eac5 12 };
bwang 42:030e0ec4eac5 13
bwang 50:f508c7860342 14 class DrivingThrottleMapper : public ThrottleMapper {
bwang 42:030e0ec4eac5 15 public:
bwang 42:030e0ec4eac5 16 virtual float map(float throttle, float w);
bwang 42:030e0ec4eac5 17 private:
bwang 42:030e0ec4eac5 18 float getMaxTqpctPlus(float w);
bwang 42:030e0ec4eac5 19 float getMaxTqpctMinus(float w);
bwang 42:030e0ec4eac5 20 float getZeroTqThrottle(float w);
bwang 42:030e0ec4eac5 21 };
bwang 50:f508c7860342 22
bwang 56:c681001dfa46 23 class LimitingThrottleMapper : public ThrottleMapper {
bwang 56:c681001dfa46 24 public:
bwang 56:c681001dfa46 25 LimitingThrottleMapper(float wmax);
bwang 56:c681001dfa46 26 virtual float map(float throttle, float w);
bwang 56:c681001dfa46 27 private:
bwang 56:c681001dfa46 28 float __wmax, __wlim;
bwang 56:c681001dfa46 29 };
bwang 56:c681001dfa46 30
bwang 73:d44bc3a46942 31 class ConstantThrottleMapper : public ThrottleMapper {
bwang 73:d44bc3a46942 32 public:
bwang 73:d44bc3a46942 33 ConstantThrottleMapper(float out) {__out = out;}
bwang 73:d44bc3a46942 34 virtual float map(float throttle, float w) {if (throttle > 0.01f) return __out; return 0.0f;}
bwang 73:d44bc3a46942 35 private:
bwang 73:d44bc3a46942 36 float __out;
bwang 73:d44bc3a46942 37 };
bwang 160:6948bb7bcabd 38
bwang 160:6948bb7bcabd 39 class AutoThrottleMapper : public ThrottleMapper {
bwang 160:6948bb7bcabd 40 public:
bwang 160:6948bb7bcabd 41 AutoThrottleMapper(float rate, float period) {_rate = rate; _period = period; val = 0.0f;}
bwang 160:6948bb7bcabd 42 virtual float map(float throttle, float w);
bwang 160:6948bb7bcabd 43 private:
bwang 160:6948bb7bcabd 44 float _rate, _period;
bwang 160:6948bb7bcabd 45 float val;
bwang 160:6948bb7bcabd 46 };
bwang 160:6948bb7bcabd 47
bwang 42:030e0ec4eac5 48 #endif