Bayley Wang
/
priustroller
Prius IPM controller
Fork of analoghalls5_5 by
meta/filters.h@35:83cf9564bd0c, 2015-03-16 (annotated)
- Committer:
- bwang
- Date:
- Mon Mar 16 15:40:07 2015 +0000
- Revision:
- 35:83cf9564bd0c
- Parent:
- 11:dccbaa9274c5
Set for 3A Iq, 0A Id, Ki = 1e-3, Kp = Kd = 0, loop still oscillates but is passable
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bwang | 11:dccbaa9274c5 | 1 | #ifndef __FILTERS_H |
bwang | 11:dccbaa9274c5 | 2 | #define __FILTERS_H |
bwang | 11:dccbaa9274c5 | 3 | |
bwang | 11:dccbaa9274c5 | 4 | class LtiFilter { |
bwang | 11:dccbaa9274c5 | 5 | public: |
bwang | 11:dccbaa9274c5 | 6 | virtual float Update(float x) {return x;} |
bwang | 11:dccbaa9274c5 | 7 | }; |
bwang | 11:dccbaa9274c5 | 8 | |
bwang | 11:dccbaa9274c5 | 9 | class MeanFilter: public LtiFilter { |
bwang | 11:dccbaa9274c5 | 10 | public: |
bwang | 11:dccbaa9274c5 | 11 | MeanFilter(float strength); |
bwang | 11:dccbaa9274c5 | 12 | virtual float Update(float x); |
bwang | 11:dccbaa9274c5 | 13 | private: |
bwang | 11:dccbaa9274c5 | 14 | float _mean; |
bwang | 11:dccbaa9274c5 | 15 | float _strength; |
bwang | 11:dccbaa9274c5 | 16 | }; |
bwang | 11:dccbaa9274c5 | 17 | |
bwang | 11:dccbaa9274c5 | 18 | class PidController { |
bwang | 11:dccbaa9274c5 | 19 | public: |
bwang | 11:dccbaa9274c5 | 20 | PidController(float ki, float kp, float kd, float out_max = 1.0f, float out_min = 0.0f); |
bwang | 11:dccbaa9274c5 | 21 | float Update(float ref, float in); |
bwang | 11:dccbaa9274c5 | 22 | private: |
bwang | 11:dccbaa9274c5 | 23 | float _ki, _kp, _kd; |
bwang | 11:dccbaa9274c5 | 24 | float _last_in, _integral; |
bwang | 11:dccbaa9274c5 | 25 | float _out_max, _out_min; |
bwang | 11:dccbaa9274c5 | 26 | }; |
bwang | 11:dccbaa9274c5 | 27 | #endif |