技術士(総合技術監理・機械部門)のブログ

技術士がお届けする,技術,工学,技術者倫理などの話題

pythonで制御系設計(1)

2021-08-10 14:36:44 | 工学
さて、前回の制御系設計の勉強は「制御のためのMATLAB」

でした。
内容は 制御系としては
第3章 過渡応答解析
第4章 根軌跡解析
第5章 周波数応答解析
第6章 状態空間表現に基づくMATLABによる制御系設計
第7章 MATLABで最適化問題を解く
ということで過渡応答であればステップ、インパルス応答などを丁寧に解説
根軌跡であればフィードバックシステムの根軌跡から制御系設計をすることなど
全て、詳しく解説されています。

今回は、いろいろ悩んだのですが、小職は「機械」の技術士であるし、専門は振動、免震であるし
ロバスト制御やスライディングモードや非線形制御でもよいのですが
基礎ということにしようと思います。

中野先生、美多先生共著の

で行こうかなと思います。
ただし、私の持っているのは ISBN4-7956-1109-X C3054 でコロナ社ではなく 昭晃堂のものですが、上記アマゾンで確認すると同一ということで
内容はサブタイトルにあるように古典から現代までとなっており、基礎を復習するには良いかと思います。
1章 自動制御
2章 信号の伝達と伝達関数
3章 ラプラス変換と自動制御
4章 フィードバック制御の基礎
5章 周波数応答
6章 フィードバック制御系の安定性と過渡特性
7章 フィードバック制御系の特性補償
8章 状態方程式と伝達関数
9章 座標変換と可制御性・可観測性
10章 安定化の基礎理論
11章 定常特性と現代制御理論による制御系の設計
で昭和57年の2月がまえがきの日付となっており、当時の学生時代を思い起こされる

pythonで制御系設計(0)

2021-08-09 16:42:29 | 工学
scilabの制御系の勉強から だいぶ時間が経ちました。
最近はpython!
なので これから制御系の勉強(復習)をpythonを使ってやっていきます。
環境は最近mac mini M1になったので その環境です。

最初は準備段階
いろいろググる
以下忘備録 参考として残しておきます

ーーーーーーhttps://github.com/shino-kei/control_notebook
を参考としさせていだだきました。
要は slycotがインストールできない原因を調べていて
以下のことがわかり 出来ました。

必要なもの
pipを使えるようにしておく
macの場合,slycotをインストールする前に,brew install gcc しておく
pipでjupyter, control, sympy, ipywidgets, slycot をインストール
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ということで準備完了すると思います。
なお、IDEはspiderを使用しています。


ところが
from control.matlab import *
でエラー
PATHが違うらしいが spiderではPATHがどうなっているか不明で
しかもpipとconda のinstallを併用するなと

よってspiderをあきらめ、jupyter notebookで作業をすることにして
トライ
でも やはりあとからpipしたもののpathが通っておらず
以下の対応で使えるようになりました。
import sys
sys.path.append('/Users/-ほげほげ-/opt/anaconda3/lib/python3.8/site-packages')
from control.matlab import *
import matplotlib.pyplot as plt
import numpy as np

fig, ax=plt.subplots(figsize=(3,2.3))
P=tf([0,1],[0.5,1])
y,t=step(P,np.arange(0,5,0.01))
ax.set_xticks(np.linspace(0,5,6))
ax.grid(ls=':')
ax.plot(t,y,lw=3)
stepinfo(P)



では次回からpythonによる制御系設計について勉強していきます。
以下参考のサイト かなりわかりやすいのでおすすめ!
阪大南先生の動画です。

https://www.youtube.com/watch?v=FQCrxXx4DAo

機械学習

2018-06-02 21:15:13 | 工学
機械学習について 学習しようと思う.

そもそも、学習とは何か?

人工知能の分野では 学習というと

教師あり学習、教師なし学習、強化学習 の3種類がある.

まあ、簡単に言えば、
 教師あり学習の例: 猫の画像を見て、猫である と教える.つまり教師がいる.
 
 教師なし学習の例: 動物の画像を見て、特徴を抽出して、カテゴリを分ける.教師はいない.

 強化学習の例: 上記の2例とはちょっと違い、時系列変化していくものに対して(状態と呼ぼう)
  ある動作をすると、状態が変化する.これが、良い状態になったか、悪くなったかにより、
  学習するもので、例えば、将棋などのゲームの戦略に応用する.

さて、教科書は
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
中田 秀基
オライリージャパン


を使います.
Pythonは特に強くなくてもなんとかなりそうで、まあ、Cが分かっていれば大丈夫かも.



scilab 19 '

2017-10-10 20:27:45 | 工学

さて、前回のmatlabとscilabの極配置の結果の違いは
アルゴリズムの違いと言うしかない
以下matlabで

>> ke=place(Abb',Aab',L)';
>> ke
ke =

14.4000 0.6000
0.3000 15.7000

と確かに、0.3だ.
さて

>> eig(Abb'-Aab'*ke)

ans =

-15.1000
-15.9000

あれ、L=[-15 -16]
だったので、誤差がある.0.1
一方、scilabの結果では 0.3を0にして
>> ke1=[14.4 0.6;0.0 15.7];
>> eig(Abb'-Aab'*ke1)

ans =

-15.2354
-15.7646

まあ、この誤差の方が大きい

これはmatlabに軍配か

Scilab 18

2017-09-17 17:10:51 | 工学
Scilab 18

いやあ、なぜか前回から半年も経ってしまいました。
相当、飽きていたのだと思いますが、続けたいと思います。
前回は「状態空間表現」に基づいた制御系設計に入って、可制御性、可観測性のscilabでの確認を行いました。
尾形先生の本は、その次に、極配置による設計を示しています。

その後に、MATLABであれば、その極配置問題を簡単に解けると言っています。
極配置は
1 直接代入法 2 アッカーマンの公式
によって フィードバックゲイン行列Kを決めることが可能です。
ただし、アッカーマンは1入力システムにしか使えません。
逆に、システムが複数の入力を持っている場合、行列Kを決めるのは一意に決まらないので
安定余裕を見て決める方法が提案されていて、それをロバスト極配置と呼んでいます。
MATLABでは それぞれackerとplaceというコマンドで出来ますが
scilabでは
-->A=[0 1 0;0 0 1;-1 -5 -6];
-->B=[0;0;1];
-->poles=[-2+%i*4, -2-4*%i, -10];
-->k=ppol(A,B,poles);
-->k
k =
199. 55. 8.
というように、必要なフィードバックゲインが求まります。
dx/dt=Ax+Buで u=-kxとしたときのkを
極配置する問題でしたから、それを確認すると、
->spec(A-B*k)
ans =
- 2. + 4.i
- 2. - 4.i
- 10.  と配置できています。