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

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

15072601.png

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

import numpy as np
import scipy as sp
import control as ct

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
書籍更新情報
2017-04-18
Pythonによる科学技術計算 基礎編
固定版:1.5版、リフロー版:1.2版への更新が可能になりました。
サポートページはこちら
電子書籍