str/apps/include/Pid.h (24 lines of code) (raw):

/** * @file Pid.h * @brief PID制御の計算を行うクラス * @author Futa HIRAKOBA */ #ifndef __PID__ #define __PID__ /*! @class Pid Pid.h "Pid.h" * @brief PID制御の計算を行うクラス */ class Pid{ public: /** コンストラクタ */ Pid(double p_gain,double i_gain,double d_gain,double target); /** Kp, Ki, Kd, 目標値を設定する * @param _p_gain Kp * @param _i_gain Ki * @param _d_gain Kd * @param _target 目標値 */ void setPid(double _p_gain,double _i_gain,double _d_gain,double _target); void wrapper_of_constructor(double _p_gain,double _i_gain,double _d_gain, double _diff, double _integral, double _target,double _output); /** PID制御の計算をする * @param light_value 現在の値 */ void calculate(double light_value); protected: /** PID計算値を取得する * @return 計算値 */ double get_output(); /** PID計算値を制限する * @param PID計算値 * @return PID計算値 */ double limitOutput(double pid_value); private: double p_gain; double i_gain; double d_gain; double old_diff; double integral; double target; double output; double del; }; #endif