【制御工学】Pythonによる伝達関数や状態空間モデルの計算


はじめに

仕事でロボット制御をやることになったので、以下のことを知るためにまとめた。
・制御工学の基礎知識の復習
・pythonで制御システムやPID制御をどう描くのか
・状態空間モデルを理解することでカルマンフィルタや自己位置推定を理解するため

参考文献

南裕樹 著、オーム社、「Pythonによる制御工学入門」

内容

「Pythonによる制御工学入門」の第3章の内容

共通

以下のライブラリをimport

import sympy
import control

伝達関数

以下にコードを記載

# chapter 3-2 伝達関数モデル
Np = [0,1]
Dp = [1,2,3]
P = control.tf(Np, Dp)
print(P)
出力
      1
-------------
s^2 + 2 s + 3

状態空間

以下にコードを記載

#3-3 状態空間モデル
A = '1 1 2; 2 1 1; 3 4 5'
B = '2; 0; 1'
C = '1 1 0'
D = '0'
P = control.ss(A,B,C,D)
print(P)
sysA, sysB, sysC, sysD = control.ssdata(P)
print(sysA)
出力
A = [[1. 1. 2.]
 [2. 1. 1.]
 [3. 4. 5.]]

B = [[2.]
 [0.]
 [1.]]

C = [[1. 1. 0.]]

D = [[0.]]

[[1. 1. 2.]
 [2. 1. 1.]
 [3. 4. 5.]]

まとめ

・controlやsympyといったライブラリを使うと、ラプラス変換や伝達関数表記がこんなに簡単にできる。