PIDループを使用してラインフォローを操縦する場合、設定値は常に同じになります。たとえばセンサーの中心など、ロボットに対してラインが常に同じ位置になるようにする必要があります。
したがって、ラインセンサーが-1から1までの値を出力し、0がセンサーの中心である場合、設定点をゼロにする必要があります(センサーのリードバックと差は同じになります)。ラインセンサーが0〜10の値を出力する場合は、設定値を5にする必要があります(センサーのリードバックと差は異なります)。
ホイールを異なる速度で回転するように設定してステアリングしているため、一定の速度でスムーズにラインをたどるには、エラーに基づいて両方のホイールの速度を調整する必要があります。たとえば、ライン上に留まるために左折する必要がある場合は、左のホイールを減速し、右のホイールを加速します。回転する必要があるほど、内側のホイールを減速する必要があり、外側のホイールを加速する必要があります。
エラーを修正するためにラジアンを左に向ける必要があり、現在の速度がます。θeS0
したがって、左の車輪はで移動し、右の車輪は移動する必要があります。SL= R θSR= (r + b )θ
同じ全体的な速度を維持するためには、あなたが必要と、左車輪がで旅にする必要がありますので、
右車輪が走行する必要がありますしながら、で。S0S0= (r + b / 2 )θSL=S0− (b / 2 )θSR=S0+ (b / 2 )θ
エラーがゼロに近づくにつれて、各モーターの速度も互いに近づく傾向があります。エラーが大きくなると、速度差も大きくなります。
センサーがラインがホイール間の距離よりもきつくカーブしていることを通知している場合、内側のホイールを後方に回転させる必要があるかもしれません。これらは複雑ですが、コントロールがより高度になるにつれて、段階的に作業することができます。
あなたのエラーは両方の正と負の値を持つことになりますので、また、(から連続体を表すために右規模オフ...あまりにも遠く右...スケールがライン上で...あまりにも遠く左...左に外れ、あなたがすべきif
正の値と負の値はモーターに反対の対称的な影響を与えるため、エラーが正か負かを尋ねる必要はありません。エラー値に基づいて新しい値を計算するだけです。
ラインフォローの場合は、比例ゲイン項だけで済む(つまり、他の項をゼロのままにする)ことができる場合があることに注意してください。微分項を実装すると、比例ゲイン項を押し上げてシステムの応答性を高めることができる場合がありますが、積分項が役立つことはほとんどありません。ロボットが間違った方向に進むと、エラーが大きくなるという事実は、ロボットの物理的な動きがとにかく積分項のように機能することを意味します。
P、D、Iの具体的な値は、システムの応答性によって決まります。PIDパラメーターの調整に関する一般的なアドバイスについては、私の回答とその他のPIDループを調整するための適切な戦略は何ですか?