iranaikamo sirenaisi irukamo sirenai
pidの計算の部分だけをコトコト煮詰めてライブラリにしました。
Diff: PID.hpp
- Revision:
- 0:f6d51a9c6ce9
- Child:
- 1:98493ab2f769
diff -r 000000000000 -r f6d51a9c6ce9 PID.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PID.hpp Wed Apr 14 14:21:07 2021 +0000 @@ -0,0 +1,26 @@ +#ifndef IG_PID_HPP_ +#define IG_PID_HPP_ + +class PID{ +public: + PID(double KP,double KI,double KD,double DT):Kp(KP),Ki(KI),Kd(KD),dt(DT){ + + } + void Update(double e){ + PROP = e; + INT += (curr_e + prev_e)*dt/2.0; + DIFF = (curr_e - prev_e)/dt; + mv = Kp*PROP + Ki*INT + Kd*DIFF; + } + double getmv(){ + return mv; + } +private: + double Kp,Ki,Kd; /* Pゲイン Iゲイン Dゲイン */ + double dt; /* 微小時間 */ + double prev_e,curr_e; /* 前回の誤差 現在の誤差 */ + double PROP,INT,DIFF; /* 比例 積分 微分 */ + double mv; /* manipulating variable */ +}; + +#endif /* IG_PID_HPP_ */