2

私は、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 ;
4

1 に答える 1

1

正弦波パターンとは、ロボットが次のパスをたどって、ラインを失った後にラインを取り戻す可能性を高めることを意味します。シンプルな if-else とタイマー/タコメーターの読み取り値を使用してパスをコーディングできます。(@Spektre の提案に感謝します!):

ここに画像の説明を入力

于 2016-12-05T03:12:31.380 に答える