30日ではじめての現代制御理論に解きほぐされる俺 その3
“30日ではじめての現代制御理論に解きほぐされる俺” と題しまして現代制御について勉強中です。
教科書”はじめての現代制御理論”による学習もついに完結編です。
目次
講義11 オブザーバの設計
30日ではじめての現代制御理論に解きほぐされる俺
20日目講義11 オブザーバの設計
観測できない変数があっても出力方程式を加工してフィードバックすれば推定できるという話
かなり現実的でいままで普通にやってきたことじゃん(勘で)
速く理論的で現代的になりたい#30daysModernCtrl pic.twitter.com/tyyKK1uR0t— HomeMadeGarbage (@H0meMadeGarbage) December 30, 2022
あけおめ 今年もお勉強
30日ではじめての現代制御理論に解きほぐされる俺
21日目講義11 オブザーバの設計 演習
各システムのオブザーバゲイン導出を堪能#30daysModernCtrlはじめての現代制御理論 改訂第2版
https://t.co/7NtWOZlFgS pic.twitter.com/nr9creDiFC— HomeMadeGarbage (@H0meMadeGarbage) January 1, 2023
この時点での気づき
観測できない変数があっても出力方程式を加工して入力と共にフィードバックすれば推定できるというかなり現実的な制御の話になって飲み込みやすかった。
“オブザーバ”という概念を理解出来て嬉しい。
講義12 状態フィードバック制御とオブザーバの併合システムの設計
30日ではじめての現代制御理論に解きほぐされる俺
22日目講義12 状態フィードバック制御とオブザーバの併合システムの設計
オブザーバで推定された状態ベクトルでフィードバック
それぞれゲインを独立に決定できることを学んだ。
私はパラメータが増えて不安になった。#30daysModernCtrl pic.twitter.com/3eCVJFbu6r— HomeMadeGarbage (@H0meMadeGarbage) January 2, 2023
30日ではじめての現代制御理論に解きほぐされる俺
23日目講義12 状態フィードバック制御とオブザーバの併合システムの設計 演習
各システムの状態フィードバックベクトルとオブザーバゲイン導出しまくり#30daysModernCtrl
はじめての現代制御理論 改訂第2版
https://t.co/7NtWOZlFgS pic.twitter.com/D6otWKskbs— HomeMadeGarbage (@H0meMadeGarbage) January 3, 2023
この時点での気づき
オブザーバで推定した状態ベクトルでフィードバックして安定化。
更に現実味を帯びた制御作法を学んだ。
オブザーバゲインと状態フィードバックベクトルはそれぞれ独立に決定できることも学び、パラメータが増えて少し不安になった。
しかし、それが制御だよなぁ。
講義13 サーボ系の設計
30日ではじめての現代制御理論に解きほぐされる俺
24日目講義13 サーボ系の設計
外乱を抑制する補償器の考え方を学ぶ
そりゃ変数に係数かけたのフィードバックするだけじゃ
世の中渡れないよね#30daysModernCtrlはじめての現代制御理論 改訂第2版
https://t.co/7NtWOZlFgS pic.twitter.com/R8WhaAUX5I— HomeMadeGarbage (@H0meMadeGarbage) January 4, 2023
30日ではじめての現代制御理論に解きほぐされる俺
25日目講義13 サーボ系の構成と定値外乱の演習
外乱抑制しつつ目標値への追従させるには拡大システムで考えてフィードバックゲインと補償器のゲインを定める
やっぱ制御って大変だわ。パラメータ目白押し#30daysModernCtrl pic.twitter.com/5sUnVypBIc— HomeMadeGarbage (@H0meMadeGarbage) January 5, 2023
30日ではじめての現代制御理論に解きほぐされる俺
26日目講義13 サーボ系 拡大システムの演習
演習問題(5)が計算量多すぎて途中でギブアップ。。。
これはツラい#30daysModernCtrlはじめての現代制御理論 改訂第2版
https://t.co/7NtWOZlFgS pic.twitter.com/DPIBf9p3wN— HomeMadeGarbage (@H0meMadeGarbage) January 6, 2023
この時点での気づき
外乱を抑制するための補償器と出力の最終値が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.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 最適制御
30日ではじめての現代制御理論に解きほぐされる俺
28日目講義14 最適制御
状態変数の応答性と入力エネルギを考慮した最適なフィードバックゲインの設計方法を学習
最適ゲインはリカッチ代数方程式の解から得られるらしい
リカッチ代数方程式の解は計算機で解ける#30daysModernCtrl pic.twitter.com/z8PehGC2Pl— HomeMadeGarbage (@H0meMadeGarbage) January 8, 2023
30日ではじめての現代制御理論に解きほぐされる俺
29日目講義14 最適制御 演習
計算機を覚えてしまったので、
もはや私に一生懸命 手計算する情熱はない
俺には計算機がある#30daysModernCtrlはじめての現代制御理論 改訂第2版
https://t.co/7NtWOZlFgS pic.twitter.com/kRfky9Zqq9— HomeMadeGarbage (@H0meMadeGarbage) January 9, 2023
参考
この時点での気づき
計算機を覚えてしまったので、最適設計の際の計算もラク
閉ループの極の指定によるフィードバックでも今後手計算はしないと思います。
再提起設計の際の重み係数の調整もシミュレーション的にPython使えばよいので、もう何も怖くはない。
講義15 現代制御の発展的な内容
30日ではじめての現代制御理論に解きほぐされる俺
30日目講義15 現代制御理論の発展的な内容
多入力多出力システムについてや
発展的な制御法が応用例と共に紹介されていた。今の私には難しすぎる。#30daysModernCtrl
はじめての現代制御理論 改訂第2版
https://t.co/7NtWOZl7rk— HomeMadeGarbage (@H0meMadeGarbage) January 10, 2023
この時点での気づき
これまで1入力1出力システムで現代制御の基礎を勉強していたが多入力多出力システムについてや発展的な制御法が応用例と共に紹介されていた。
正直 難しくてよく理解できなかった。。
必要になったら章内で紹介されている参考文献を紐解きたい。
おわりに
やろうやろうと先延ばしにしてきた現代制御理論の学習でしたが、遂に教科書 “はじめての現代制御理論” を通じて基礎を一通り勉強いたしました。
始めた時点で自身に必要であるかすら判断できない理論でしたので、学生の時のように演習含めてガッチリ読み込みました。
数学的テクニックを使用して手計算で問題を解くなんて本当に久々でしたが “俺は現代制御理論の基礎を学んだ” という事実を体に刻めたかと思います。
終盤にPythonで行列計算ができ、状態空間表現が取り扱えることを知ったので今後は計算機を使うことになるかと思います (二度と手計算で逆行列や固有値や状態ベクトル、ゲインを導出することはないでしょう) 。
この学習によって現代制御理論に基づいた技術記事なども少しは読めるようになっていると思うので、振り返って成長を実感したいものです。
これまで古典制御で製作してきたものもこの学習を経てどう考えられるようになるのかも試してみたいです。
今年も忙しくなりそうです。