30日ではじめての現代制御理論に解きほぐされる俺 その3

Home > 学問 > 30日ではじめての現代制御理論に解きほぐされる俺 その3
すき 0
うんこ 0

30日ではじめての現代制御理論に解きほぐされる俺” と題しまして現代制御について勉強中です。

30日ではじめての現代制御理論に解きほぐされる俺 その2

教科書”はじめての現代制御理論”による学習もついに完結編です。

 

 

講義11 オブザーバの設計

 

この時点での気づき

観測できない変数があっても出力方程式を加工して入力と共にフィードバックすれば推定できるというかなり現実的な制御の話になって飲み込みやすかった。

“オブザーバ”という概念を理解出来て嬉しい。

 

講義12 状態フィードバック制御とオブザーバの併合システムの設計

 

この時点での気づき

オブザーバで推定した状態ベクトルでフィードバックして安定化。
更に現実味を帯びた制御作法を学んだ。

オブザーバゲインと状態フィードバックベクトルはそれぞれ独立に決定できることも学び、パラメータが増えて少し不安になった。
しかし、それが制御だよなぁ。

 

講義13 サーボ系の設計

 

この時点での気づき

外乱を抑制するための補償器と出力の最終値が0ではないシステム(サーボ系)と怒涛のテクニック学習。

外乱と目標値を加味した拡大システムの演算量はハンパなく この講義の演習(5)は途中ギブアップ。

さらにオブザーバで変数推定することとかになったら、どうなるんだろう。。。
計算機必須ですね。

 

番外編 Phython勉強

はじめての現代制御理論に掲載されている図を描画するPythonコードが以下で公開されています。
 First_Course_Modern_Control_Eng_Python

ここではPythonによる図の描き方や行列の取り扱いについて学びます。

PythonコードはStable Diffusionで学んだGoogle Colabで実行することにしました。
ブラウザで実行できるので楽です。

グラフのプロット

早速 教科書 図6.1 用のコードを実行してみました。

図6.1がきれいに出力されました。

matplotlibというパッケージを用いてグラフが描画されています。
コードには丁寧にコメントがされているので非常に勉強になります。

状態空間表現の計算

Python Control パッケージをインストールすることでMATLABとコンパチのモジュールが 使えるようになり状態空間表現を取り扱うことができます。
Google Colabで以下のようにインストール

 

教科書 図6.2 用のコードを実行してみました。

matlab.ss()で状態空間表現を指定

初期ベクトルを指定してmatlab.initial()で自由応答を計算

状態空間表現のcを単位ベクトルにしているので y1 = x1, y2 = x2となり状態ベクトルがプロットできる。

なんとPythonで簡単に状態方程式が解けてしまいました!
これは便利ですね。

しかも行列の固有値もnumpyパッケージによって簡単に得られるんですね。

その他 勉強になったこと

このPythonサンプルコードを勉強してためになったことを以下にまとめます。

  • matlab.place(A, b, poles) でpolesで指定した状態フィードバックベクトルを得ることができる。
    オブザーバゲインも同様に得られる。
  • np.array().Tで転置
  • np.linalg.inv()で逆行列
  • np.concatenate()で行列結合
  • matlab.step()でステップ応答が得られる。

演習問題リベンジ

手計算で断念した講義13の演習問題(5) をPythonで解いてみました。

一瞬で解けました!!!

参考

この時点での気づき

これまで手計算でかなり苦労してきたが、Pythonで行列計算や応答が一瞬で得られることに驚いた。

今後はPythonを活用することにします。

講義14 最適制御

 

参考

この時点での気づき

計算機を覚えてしまったので、最適設計の際の計算もラク
閉ループの極の指定によるフィードバックでも今後手計算はしないと思います。

再提起設計の際の重み係数の調整もシミュレーション的にPython使えばよいので、もう何も怖くはない。

 

講義15 現代制御の発展的な内容

この時点での気づき

これまで1入力1出力システムで現代制御の基礎を勉強していたが多入力多出力システムについてや発展的な制御法が応用例と共に紹介されていた。

正直 難しくてよく理解できなかった。。
必要になったら章内で紹介されている参考文献を紐解きたい。

 

おわりに

やろうやろうと先延ばしにしてきた現代制御理論の学習でしたが、遂に教科書 “はじめての現代制御理論” を通じて基礎を一通り勉強いたしました。

始めた時点で自身に必要であるかすら判断できない理論でしたので、学生の時のように演習含めてガッチリ読み込みました。
数学的テクニックを使用して手計算で問題を解くなんて本当に久々でしたが “俺は現代制御理論の基礎を学んだ” という事実を体に刻めたかと思います。

終盤にPythonで行列計算ができ、状態空間表現が取り扱えることを知ったので今後は計算機を使うことになるかと思います (二度と手計算で逆行列や固有値や状態ベクトル、ゲインを導出することはないでしょう) 。

この学習によって現代制御理論に基づいた技術記事なども少しは読めるようになっていると思うので、振り返って成長を実感したいものです。

これまで古典制御で製作してきたものもこの学習を経てどう考えられるようになるのかも試してみたいです。

今年も忙しくなりそうです。

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください