PIDコントローラーをトレーニングする最良の方法は何ですか?


7

これは非ゲーム開発の境界線ですが、PIDはゲームで一般的に使用されるので、試してみようと思いました。

私のゲームには、ステアリングやスロットルコントロールなどに使用されるPIDコントローラーがいくつかあります。正確に調整できません。私が最適なソリューションに近づいているように感じることは決してありません。そして、取り除くことができない奇妙な振動またはスパイクでそれらを「十分に」そのままにしておくのは非常に魅力的です。

欲求不満でこの投稿に私を駆り立てた1つのコントローラーは、非常に小さなエラー入力に対して小さな振動を生成します。入力が大きい場合は問題ありませんが、安定性はそれほど高くありません。

これらのことをより確実にトレーニングする方法についてのヒントやリソースはありますか?


コントローラーが安定しているとは思いません。PIDコントローラーを使用する考えと結婚していますか?特定のケースを詳しく説明できない場合は、より安定したソリューションを提供できる可能性があります。
ジョナサンフィショフ2010

PIDコントローラーを調整するための一般的なアプローチを探しています。P、I、D係数を特定の順序で調整しますか?調整するためにクローズドシステムを形成する必要がありますか、それともゲーム環境内でそれを実行しましたか?
tenpn

回答:


7

実際には、PIDコントローラーに関するEuan ForresterによるAI Game Programming Wisdom 2にまともな記事があります。

さまざまな係数の調整について彼が言ったことを繰り返します。

  1. 比例係数(P)から開始 -これは、コントローラーの動作に最も大きな影響を与えます。他の2つの係数を0に設定し、大まかな望ましい効果が得られるまでPを調整します。
  2. 一度に1つの係数のみを変化させる-1つの係数について適切な感触を得て、他の2つの係数を一定に保ちながら、係数がほぼ機能することを確認します。
  3. 係数をリアルタイムで調整 -利点は少し明白です。値を変更するたびにすべてを再コンパイルする必要はありません。これは一般的なコーディングの意味です。
  4. (オプション)インスタント再生機能を配置します -これは、PID値で実際に奇妙なことが起こった場合に役立つので、その時点までの手順を再生できます。

彼は多くのオンラインリソースも提供しています(そのうちのいくつかはデッドリンクなので、まだ利用可能なリソースのみを投稿します)。

視覚ループ調整

PID温度コントローラーの調整

それが役に立てば幸い

〜レイ




1

単純な「試行錯誤」方法を使用してPIDを調整しないでください!パラメータは互いに依存しているため、良い結果が得られることはありません。FOPDT(1次とむだ時間)モデルをIMCの数式と共に使用して、テストデータからKp、Ki、Kdを計算します。

制御信号のステップテストを行い(コントローラーのない「プラント」に直接)、制御信号に関連するため、制御しようとしているプロセス変数を記録します。次に、データを見て、プロセスゲイン、デッドタイム、プロセス時間を書き留めます。(詳細はこちらこちら)。

ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

通常は、ControlGuruサイト全体を読んでください。これは非常に優れたリソースです。FOPDTモデルを使用して、試行錯誤することなく、適切なPID値を即座に取得できました。それは素晴らしい働きをして、最適なコントローラーを作り出します。次に、Kp、Ti、およびTdからKp、Ki、およびKdを計算するときに、すでに適切に調整されたコントローラーに収束の速さを伝えるための適切な方法である「積極性」の値を指定するオプションもあります。

また、エラーの微分ではなく、PVの微分を使用する必要があります。ほとんどの場合、エラーで微分を行う意味はありません。これを行うには、Kdの前に負の符号を使用し、次の式を使用します。

ここに画像の説明を入力してください

これにより、設定値を変更したときに「派生キック」と呼ばれる効果が回避されます。詳細はこちら

手動でチューニングすることはもうありません。FOPDTモデルは、PIDループを非常に素早く調整するための最も単純な方法だと思います。また、自己調整(自己安定化)プロセスと統合プロセス(安定化しない-力が加えられた後のオブジェクトの位置など)を区別する必要もあります。チューニング方法は少し異なりますが、こちらのcontrolguruサイトでも説明されています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.