Python で最適ロバストサーボ系のフィードバックゲインを求める

最適ロバストサーボ系のフィードバックゲインを Python で求める方法のメモ。
最適ロバストサーボ系のブロック線図は以下のようになります。

15072601.png

システムの拡大偏差系を求め、評価関数の重み \(\mathbf{Q}_{e}\) と \(r_{e}\) を定義し、リカッチ方程式を解けばフィードバックゲインを求めることができます。

# coding: utf-8
import numpy as np
import scipy as sp
import control as ct
from matplotlib import pyplot as plt

Ae = np.array([[0, 1, 0],
	       [0, -1, 1],
	       [0, 0, 0]])
Be = np.array([[0],
	       [0],
	       [1]])
Ce = np.array([[1, 0, 0]])
Qe = Ce.T*Ce
Re = np.array([[1]])

S, E, Ke = ct.care(Ae, Be, Qe, Re)
Z = np.array([[0, 1, 0],
	      [0, -1, 1],
	      [1, 0, 0]])
K = Ke.dot(np.linalg.inv(Z))
K1 = [K[0][0], K[0][1]]
K2 = K[0][2]

print("K1 =\n", K1)
print("K2 =\n", K2)
K1 =
 [2.1447003020766107, 1.2998696928637543]
K2 =
 1.0

コメント

Comments powered by Disqus
書籍更新情報
2016-10-21
Pythonによる科学技術計算 基礎編
PDF版の販売を開始しました。
販売ページはこちら

2016-09-09
Pythonによる科学技術計算 基礎編
1.2版への更新が可能になりました。
サポートページはこちら
電子書籍
Pythonによる科学技術計算 基礎編
Kindle ストア、Leanpubで販売中です
Pythonによる科学技術計算 基礎編
PDF版の販売はこちら
同人誌
技術書典(2016/6/25)
Emacs/org-modeのPDF作成術
電子版をBOOTHで販売中です
Emacs/org-modeのPDF作成術
Share