【倒立振子part27】倒立振子モデルのシステム同定の準備

前回、モータのモデルを作ってからシステム同定について文献を漁ったりいろんな方のブログなどを参考にさせていただいて、だいぶ理解が深まった。(と思う。)
一応入力の信号の選定やシステム同定のやり方、マイコンに書き込むプログラムは作ってみた。
しかしモータが届かないのでこれ以上先には進めない状態になってしまった。
そこで、最終目標であった「倒立振子モデル自体のシステム同定」を行うための準備を進めていこうと思う。

システム同定用のモデル作成

システム同定では同定用の信号を入力して出力を観測することで対象を同定するのが、開ループ系で実験を行うことが望ましいとされている。閉ループ系(不安定系)では未知成分も含めてフィードバック制御を行うため、未知成分と入力の無相関性を仮定する同定手法は有効に機能しないためです。
前回作成したモデルは制御なしでは安定状態にならない不安定系のため、システム同定用に安定状態での振子のモデル作成を行う。


システム同定用のモデルでは安定系にするため\theta_p→\theta_p+\piとする。

振子の重心座標

\begin{cases} 
x_p = l_p\sin(\theta_p+\pi)= -l_p\sin\theta_p\\ 
y_p = l_p\cos(\theta_p+\pi)=-l_p\cos\theta_p
\end{cases}

ロータの重心座標

\begin{cases} 
x_r = l_r\sin(\theta_p+\pi)= -l_r\sin\theta_p\\ 
y_r = l_r\cos(\theta_p+\pi)=-l_r\cos\theta_p
\end{cases}

この重心座標から前回と同様に計算すると
 
\begin{cases} 
J_r\ddot{\theta_r}+(m_r{l_r}^2+mp{l_p}^2+J_r+J_p)\ddot{\theta_p}+\mu_p\dot{\theta_p}+(m_rl_r+m_pl_p)g\sin\theta_p=0\\
J_r\ddot{\theta_r}+\mu_r\dot\theta_r+J_r\ddot{\theta_p}=\tau_\omega
\end{cases}

となり、不安定系に対して(m_rl_r+m_pl_p)g\sin\theta_p項の符号が反転した形に変形できる。
線形化を行うと
 
\begin{cases} 
J_r\ddot{\theta_r}+(m_r{l_r}^2+mp{l_p}^2+J_r+J_p)\ddot{\theta_p}+\mu_p\dot{\theta_p}+(m_rl_r+m_pl_p)g\theta_p=0\\
J_r\ddot{\theta_r}+\mu_r\dot\theta_r+J_r\ddot{\theta_p}=\tau_\omega
\end{cases}

ここから先はモータのシステム同定が完了した後に状態方程式に変形してシステム同定を行う。

試験装置

以前、振子系のパラメータ同定を行う際に自由振子になるような実験装置を製作した。
その時は入力がなく外力が加わらなかったがシステム同定では入力が激しく励起するためこの装置では土台が軽く上手く試験できない可能性があるので剛性が高いものに固定して安定系の振子でのシステム同定を行う。


やっぱりCADをやってる時が落ち着く。。。

参考にさせていただいたサイト

システム同定による倒立振子のLQR制御 #MATLAB - Qiita