制御系設計用Pythonコードと実験用のESP32のコードです。
制御系設計に使用してください。
シミュレーション条件と状態方程式、非線形システムを、任意のシステムのものに書き換えてやるとシミュレーションできます。非線形システムの運動方程式は下記のような関数の形で定義してください。
# 非線形システムの定義
def nonlinear_system(x, u):
"""
非線形システムの運動方程式
x : 状態ベクトル
u : 制御入力
"""
x1, x2 = x
dx1 = x2
dx2 = -alpha * x2 - beta * np.sign(x1) + gamma * u
return np.array([dx1, dx2]) # 1次元配列として返す
定常カルマンフィルタを動作させたい場合は84行目のコメントアウトを外し、85行目をコメントアウトして下さい。極配置法により設計したオブザーバを動作させたい場合はその逆です。
シミュレーション結果をCSVで保存したい場合は136行目のコメントアウトを外してください。
Qiitaに記述した関数は大体この中に記述されています。
私が普段使いする便利そうな関数をまとめたライブラリです。