shata
Diff: MotorController.h
- Revision:
- 1:76da1a46652f
- Parent:
- 0:7f95508de23e
- Child:
- 2:113b6a35d37c
--- a/MotorController.h Sat Jul 10 01:51:58 2021 +0000 +++ b/MotorController.h Mon Oct 25 10:20:35 2021 +0000 @@ -1,24 +1,14 @@ #ifndef MOTORCONTROLLER_H #define MOTORCONTROLLER_H -//#define ACCELERATION_MODE 0 -//#define BRAKE_MODE 1 -//#define CONVERGENCE_MODE 2 -//#define THREASHOLD_SC 1.0 -//#define THREASHOLD_SC_TIME 0.005 -//#define THREASHOLD_AC 0.1 - -#define DUTY_OFFSET 0.022 -#define THREASHOLD_DUTY_OFFSET 0.41 class MotorController { private: - double duty; - double delta_t; double angle; double angle_offset; + double duty_offset; double Cf_; double Cb_; @@ -29,9 +19,8 @@ double duty_max; double omega_max; - - int state_sc; - double acc_time; + double acceleration_max; + double pre_target_omega; Ec *ec_; CalPID *sc_pid; @@ -56,7 +45,8 @@ void setPDParamAcDuty(double kp, double kd);//(duty比による)角度制御のPDゲイン設定用関数 void setPDParamAcOmega(double kp, double kd);//(速度制御による)角度制御のPDゲイン設定用関数 void setDeltaTime(double dt);//制御周期の設定用関数 - + void setAccelMax(double a_max); + void setDutyOffset(double duty_off); //////////////////////////////////////////実際に使うときに呼び出す関数 double getAngle(); @@ -65,13 +55,11 @@ void turn(double duty);//モーターにduty比入力する void AcDuty(double target_angle);//PD算出されたdutyによる角度制御 void AcOmega(double target_angle);//PD算出された角速度による角度制御。速度制御を利用している - void Sc(double target_omega);//速度制御 - double calSc(double target_omega);//速度制御 + void Sc(double target_omega_input);//速度制御 + double calSc(double target_omega_input);//速度制御 void stop();//duty=0を入力 void reset(); - double getDuty(); - }; #endif \ No newline at end of file