線形で設計した制御器を非線形のシステムに適用した時の応答

制御工学

みなさん,こんにちは
おかしょです.

世の中のロボットのほぼすべては非線形のシステムです.しかし,ある条件下においては非線形のシステムを線形なシステムとして近似して扱うことができます.

そのため,制御系の設計も線形のシステムを基にして設計されることが多いです.

しかし,そのような線形システムを基にした制御系を非線形なシステムに適用しても問題ないものなのでしょうか.

この記事では線形制御器を非線形のシステムに適用しても問題ないのかを,数値シミュレーションを使って検証したいと思います.

この記事を読むと以下のようなことがわかる・できるようになります.

  • 線形と非線形の関係
  • PID制御器の性能

 

この記事を読む前に

この記事では線形システムを基にして設計したPID制御器を使用します.

このPID制御器は極配置法で設計していて,以下の記事で詳しく解説しているのでそちらを先に読んでおくことをおすすめします.

 

PID制御器の性能

PID制御器の性能は以前の記事で詳しく書いているので,簡単に説明します.

PID制御器というのは,構造がシンプルで制御工学に詳しくない人でも直感的に調整ができるため,幅広いロボットで利用されている制御器です.

この制御器は即応性を向上させるP制御と応答の振動を抑えるD制御,定常偏差をなくすI制御の3つで構成されています.

PID制御器は線形・非線形問わずどのようなシステムにも適用可能なのですが,今回は線形のシステムを基にゲインを決定したので線形PID制御として扱います.

 

非線形のシステム

この記事では,非線形システムとして二輪型倒立振子を使用します.

数値シミュレーションではこちらの記事で求めた運動方程式を使います.

振子の長さなどの細かいパラメータはこちらに書かれています.

この二輪型倒立振子に線形PID制御器を適用します.

線形システムは非線形のシステムをある条件の下で近似したシステムなので,その条件を満たす場合と満たさない場合の二通りで数値シミュレーションをします.

 

シミュレーション結果

まずは振子の初期角度を0.1radとした時の数値シミュレーション結果を示します.

まずは線形のシステムに適用した場合の結果を示します.

線形の制御器を線形のシステムに適用しているので制御できるのは当たり前です.

では,これを非線形のシステムに適用します.

非線形のシステムに適用しても全く同じような制御結果となります.

線形の制御器を非線形のシステムに適用しても全く同じ性能を示すことがわかりました.

このシミュレーションでは初期値を0.1radとしていて振子の角度は微小な範囲と言えます.
そのため,非線形項が大きくならずに制御性能に影響がなかったのだと考えられます.

それでは,振子の角度が微小ではなく,非線形項が大きくなるような状況からシミュレーションを行うとどうなるのでしょうか.

以下では振子の初期値を0.5radとした時の数値シミュレーションを示します.

線形なシステムの場合はこのように問題なく振子の角度を0にして安定化することができます.

非線形なシステムに適用した場合,このように振子を安定化することはできません.

非線形なシステムの場合,振子の角度が大きくなったことによって非線形項が大きくなります

そのため,振子が倒立状態にはならず線形PID制御器では制御ができません.

しかし,制御入力は常に生じているので振子が完全に垂れ下がった状態には収束していません.

PID制御器がダメなわけではなく,線形システムを基に設計したPID制御器を非線形システムに適用することはできないという意味です.

非線形システムに合わせてPIDのゲインを調整すれば,今回の数値シミュレーションの条件でも安定化させることができます.

 

まとめ

この記事では線形制御器を非線形システムに適用した時の応答について調べました.

線形制御器でも線形に近似できる範囲であれば非線形なシステムでも制御性能は保てることがわかりました.

しかし,実際のロボットでは外乱などの影響によって非線形項が大きくなることもあるので,線形制御器だけで非線形システムを安定化させるのは難しいように感じます.

 

続けて読む

このブログではこの記事で使用した二輪型倒立振子を実際に開発しています.

以下の記事で二輪型倒立振子ロボットの設計図を公開しているので,興味のある方は読んでみてください.

Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.

それでは最後まで読んでいただきありがとうございました.

コメント

タイトルとURLをコピーしました