滑らかで安定したライントレースを実現する:ETロボコンではじめるシステム制御(4)(2/2 ページ)
今回は実際に走行体(教育用レゴ マインドストームNXT)にPID制御を適用し、滑らかなライントレースを実現するまでの手順を解説
3.挙動に合わせたチューニング
チューニングをはじめる前に一言。限界感度法でPIDパラメータを求める場合、Kpの値を基準値としてKi、Kdの値を求めると説明しましたが、以降のチューニングでは、Kp、Ki、Kdの値は独立して扱います。これは、それぞれのPIDパラメータ値のチューニング結果がお互いに干渉し合うことを避け、チューニングを容易にするためです。
さて、それではいよいよ実際に走行体をコースで走らせ、挙動を確認しながら調整をしていきます。
先ほどの映像(動画2)のようにカーブの途中で曲がり過ぎてしまう場合を考えましょう。曲がり過ぎてしまうということは、「何らかの制御が強い」場合だと推測できます。どの制御が効き過ぎているのか見た目で分かることもありますが、今回は分からなかったとしてP制御、I制御、D制御のすべての制御を下げてみました。すると次のようになりました(図5)。
図5のオレンジ色の破線が前項で求めたPIDパラメータそのままで走行した場合、薄い赤色の破線がすべてのPIDパラメータを0.7倍し走行した場合、そして一番外側の赤色の破線がすべてのPIDパラメータを0.5倍し走行した場合の軌跡を示しています。
次の映像(動画3)は、PIDパラメータを0.7倍したときの走行体の走行です。
動画3の映像から、次のことが分かります。
――カーブがはじまってしばらくはカーブの曲率に追い付いていない、そして、その状態がしばらく継続すると急激に曲がり出す。
限界感度法で求めたPIDパラメータそのままの走行でも、上記ほどの顕著な傾向が見られないにしても、同様のことが起こっていたと推測できます。つまり、P制御が不足していたことで、カーブの曲線に追い付けず、カーブ部分で積分値が増加し続け、結果、I制御が効き過ぎて、急激に曲がり出したといえます。
さて、カーブ途中で曲がり過ぎていた原因は、I制御が強過ぎたことだと推測できました。I制御はあくまでもP制御によって詰められないオフセットを補正するためものなのですが、強過ぎるとこのように不安定の原因になってしまいます。また、P制御がわずかに足りていないことも判明しました。それぞれを一度に補正したいところですが、修正後にどの効果が出ているのか分かりにくいので、I制御をいったんゼロにしてP制御をチューニングしてからI制御を修正することにします。
次の図6は、サンプルのKpを0.36から0.38まで変化させたトレース図です。
サンプルでは目標値からのずれも少なく、カーブの切り替えの際にも安定していた0.38を最適なKpとして採用しました。
次の動画4は、Kp=0.38にして走行体を走行させたときの映像です。
なお、Kpを上げ過ぎると少しの外乱で振動し、不安定になりますので注意してください。
次の動画5は、P制御が過剰に働き左右に振れる状況を示すためにKp値を過剰に設定して走行体を走行させたときの映像です。
このような走行状態になった場合には、P制御が強過ぎる可能性が高いため、P制御を弱めて走行させてみてください。
次にI制御を調整します。PD制御で連続したカーブを走行する場合、走行体は制御の遅れから目標値から少しずれた所を走ります。一方、PID制御で連続したカーブを走行する場合、目標値からのずれ(オフセット)を除去し、走行体は滑らかなライントレースを実現します。
限界感度法で求めたPIDパラメータでは、I制御が強過ぎて内側へ曲がってしまいました。これは、I制御が過去に対する制御のため、目標値に達してからも同じ方向へ曲がろうとすることに起因しています。
I制御が強過ぎると、カーブの切り替えやカーブの出口などで過去の状態を引きずり、その結果、過剰に内側へ入り過ぎることになります。走行体にI制御を導入してオフセットを除去するためには、少しのI制御で十分ですので、ゼロから少しずつI制御を効かせて調整してみてください。
サンプルではKiを0.01単位で増加させ、0.06に調整しました。下記の映像(動画6)は、I制御によりカーブ途中でラインに張り付く様子が見て取れます。
これで、最適なPIDパラメータを求めることができました。しかし、今回のPIDパラメータチューニングではD制御のチューニングについて触れることができなかったため、最後にD制御のチューニングについて説明します。
カーブの入り口やカーブの切り替えでコースから外れる傾向がある場合には、応答性を上げてみましょう。動画7(D制御不足)と動画8(D制御最適)を見比べてみてください。
D制御が不足しているときは、応答性が不足しているため、カーブの入口でいったんラインから外れた後、再びラインに復帰していることが見て取れたかと思います。
このような状態を改善し、応答性を上げるには、D制御を強めるようにKd値をチューニングしてみてください。また、D制御が強過ぎる場合には、走行が不安定になってしまうことがあります。
次の動画9は、Kd値を過剰に設定して走行体を走行させたときの映像です。
D制御が強めに設定されているため、カーブの切り替え部分で走行体が振動してしまっています。このような状態になった場合には、D制御が強過ぎる可能性が高いため、D制御を弱めて走行させてみてください。
いかがでしょうか? PIDパラメータの特性に応じた走行体の走行状態の違いを理解すれば、チューニングも比較的容易に行えると感じていただけたのではないでしょうか。このように「現在」の偏差に対する操作量が足りないのか、それとも「過去」や「未来」に対する操作量が足りないのか、はたまた、操作量が過剰になっているのかを検討しながら少しずつチューニングして、最適なPIDパラメータを求めてください。
チューニングが完了した暁には、滑らかなライントレースができるようになり、高速かつ安定した走行が実現できることでしょう。
全4回にわたってお届けしてきた本連載の目的は主に、はじめてETロボコンに取り組まれる方にわたしたちが学んだ知識を公開し、今後のロボコン活動に役立てていただこうというものでした。本連載の内容が少しでもETロボコンに興味を持っている皆さんのお役に立てれば幸いです。これまでお付き合いいただき、ありがとうございました。(連載完)
Copyright © ITmedia, Inc. All Rights Reserved.