私は、NXT マインドストームを設定した小さなプロジェクトに取り組んでいます。私の意図は、線を非常にスムーズに、そしてできるだけ速くたどることができるロボットを構築することでした. したがって、ちょっとした調査の後、私は PID アルゴリズムを見つけ、そのアルゴリズムを理解して NXC コードに実装することができました。ロボットはアルゴリズムに従ってすべてを正しく実行しましたが、ラインが中断 (ギャップ) すると、ロボットはラインを失い、元に戻ることができなくなります。問題は、ギャップが9cmまでなら彼は戻ってくることができるが、10cmになると彼はラインを失うだけだ. 私は1つの光センサーを使用しています。この問題に対処するために PID コードを調整する方法はありますか?
私のコード:
// kd ,ki kp are also defined
task main()
{
int error = 0;
float previous_error = 0;
float setpoint = 0;
float actual_position = 0;
int integral = 0;
float derivative = 0;
float speed=50;
float lasterror = 0
float correction = 0
float fahrenA = 0
float fahrenC = 0
SetSensorLight(IN_2);
SENSOR_TYPE_LIGHT_ACTIVE;
while(true)
{
actual_position = LIGHTSENSOR;
error = setpoit - actual_position ;
integral = error + intergral ;
derivative = error - previous_error;
correction = (kp * error )+ (ki * intergral) + (kd * derivative );
turn = correction / 100;
fahrenA = Tp + turn;
fahrenC = Tp – turn;
OnFwd(OUT_A,fahrenA);
OnFwd(OUT_C,fahrenC);
previous_error = error ;