[執筆途中]倒立振子とPID制御のモデル

*執筆途中だが公開ポリシーに則り公開。
最終更新:2023.12.28

記事を通して言いたいこと(結論)

 例によって、冒頭で述べておく。
  • PID制御と軸トルク駆動にて直立姿勢を維持する倒立振子の計算モデルを作成した.本記事はその速報.
  • 定性的に意図通りの挙動を示す事を確認した.
  • 倒立振子は、静安定が負で非線形性を持ち、PID制御は全ての要素を使う必要がある.そのため、動システムとPID制御の挙動を学ぶのに良い例題である.
    • PID制御則のパラスタによる挙動変化の考察・解説は、別途記事作成予定
  • 本モデルの作成チュートリアル記事を別途作成予定.

モデル化対象(とその周辺について)

シミュレーションモデル

    Diagram

     本モデルの幾つかの特徴を下記に記す.
    •  振子の回転軸にトルクを与える.よく登場する倒立振子は振子回転軸の部分の位置を水平方向に稼働させて直立状態を保つように制御するが、一歩階簡略化し、軸トルクを直接駆動する.
    •  振子は質点と質量・慣性モーメントが無い軸と質点を繋ぐ棒から成る.
    •  外乱力を2種類与える.
      1. 常時働き続ける外力.風が吹き続けているようなイメージ.
      2. 時間に対して矩形波の形で与える外力.一時的に手で押す、ハンマーで叩く動作のイメージ
    •  制御則は純粋なPID.
      • 目標値は直立状態だけでなく、角度を自由にinputさせられる
    • OpenModelicaのアニメーション表示対応
    ●シミュレーションモデル情報

シミュレーション実行

    Parameter(主要なものに限定)

    1. ctrl_P.k: 30 [nond]
    2. 比例ゲイン.
    3. ctrl_I.k: 40 [nond]
    4. 積分ゲイン.
    5. ctrl_D.k: 1 [nond]
    6. 微分ゲイン.

    Input

     時間変化させるinput.
      
    1. foece1.force[1]: x方向(固定フレーム)外乱力
    2. from_deg.u: 目標振子角度
    3.  90 deg: 直立状態

    Result: variables vs. time

    1. cutForce_body_b_tot.force[1]
    2.  振子に掛かる外力(合力)、world固定フレームx-方向.
    3. relAngleSensor.phi_rel
    4.  振子角度.(90 deg で直立).
    5. cutForce_body_b_tot.frame_b.f[1]
    6.  振子に掛かる外力(合力)、振子固定フレームx-方向.
    7. cutForce_body_b_tot.frame_b.f[2]
    8.  振子に掛かる外力(合力)、振子固定フレームy-方向.
    9. ctrl_P.u
    10.  比例制御器への入力信号.
    11. ctrls.y
    12.  比例、積分、微分制御器それぞれからの出力信号.
    13. torque_actuator.tau
    14.  軸アクチュエータ(トルク発生機)の出力トルク.

    後書き・まとめ

      例によって、冒頭で述べた結論をもう一度。
      • PID制御と軸トルク駆動にて直立姿勢を維持する倒立振子の計算モデルを作成した.本記事はその速報.
      • 定性的に意図通りの挙動を示す事を確認した.
      • 倒立振子は、静安定が負で非線形性を持ち、PID制御は全ての要素を使う必要がある.そのため、動システムとPID制御の挙動を学ぶのに良い例題である.
        • PID制御則のパラスタによる挙動変化の考察・解説は、別途記事作成予定
      • 本モデルの作成チュートリアル記事を別途作成予定.
    以上

コメント

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