robot

Dependencies:   FastPWM3 mbed

ThrottleMapper/ThrottleMapper.h

Committer:
bwang
Date:
2017-07-01
Revision:
160:6948bb7bcabd
Parent:
110:c66f359b6932
Child:
174:3872516b0d04

File content as of revision 160:6948bb7bcabd:

#ifndef __THROTTLE_MAPPER_H
#define __THROTTLE_MAPPER_H

class ThrottleMapper {
public:
    virtual float map(float throttle, float w) = 0;
};

class NullThrottleMapper : public ThrottleMapper {
public:
    virtual float map(float throttle, float w) {if (throttle >= 0.0f) return throttle; return 0.0f;}
};

class DrivingThrottleMapper : public ThrottleMapper {
public:
    virtual float map(float throttle, float w);
private:
    float getMaxTqpctPlus(float w);
    float getMaxTqpctMinus(float w);
    float getZeroTqThrottle(float w);
};

class LimitingThrottleMapper : public ThrottleMapper {
public:
    LimitingThrottleMapper(float wmax);
    virtual float map(float throttle, float w);
private:
    float __wmax, __wlim;
};

class ConstantThrottleMapper : public ThrottleMapper {
public:
    ConstantThrottleMapper(float out) {__out = out;}
    virtual float map(float throttle, float w) {if (throttle > 0.01f) return __out; return 0.0f;}
private:
    float __out;
};

class AutoThrottleMapper : public ThrottleMapper {
public:
    AutoThrottleMapper(float rate, float period) {_rate = rate; _period = period; val = 0.0f;}
    virtual float map(float throttle, float w);
private:
    float _rate, _period;
    float val;
};

#endif