離散化を1次近似で行う方法~その3~

制御工学

みなさん,こんにちは
おかしょです.

前回前々回に続いて離散化を1次近似で行う別の方法を詳しく解説していきます.

この記事を読むと以下のようなことがわかる・できるようになります.

  • 制御対象や制御器を離散化する方法
  • 離散化を1次近似で行う方法

 

この記事を読む前に

この記事は以下の記事の続きとなっています.

まだ読んでいない方は以下の記事を先に読んでおくことをおすすめします.

制御対象を離散化するのはなんのため?~理論式や手法にはどのようなものがあるのか~
みなさん,こんにちはおかしょです.制御工学を学び,実際のロボットに設計した制御器を適用するには離散化という作業が必ず必要になります.この記事をはじめとして,これから何回かに分けて制御対象を離散化する方法について解説していき...

 

1次近似で離散化する方法

こちらの記事で離散化の理論式を示しました.

\[
x_{k+1}=x_k+A\int_{t_k}^{t_{k+1}}(x(t))dt+T_s Bu_k \tag{1}
\]

この理論式の積分の部分を1次関数で近似をします.

この記事では前回前々回とは違って以下の条件を満たす1次関数で近似します.

時刻\(t_{k+1}\)で\(x\)と\(\dot{x}\)が離散化したものと実際のもので一致する

 

1次関数を求める

まずは上の条件を満たす1次関数を求めます.

近似した後のデータを\(\bar{x}\)とおいて実際のデータを\(x\)とおきます.

時刻\(t_k\)での実際のデータ\(x\)を\(x_k\)と表記することにします.

ここで近似する1次関数を以下のようにおきます.

\[
\bar{x}=at+b \tag{2}
\]

上式の傾き\(a\)と切片\(b\)を求めます.

まず,時刻\(t_{k+1}\)でデータを微分した値(\dot{x})が実際のデータ(\(x_{k+1}\))と離散化したもの(\(\bar{x}_{k+1}\))とデータが一致します.
つまり,式で表すと以下のようになります.

\begin{eqnarray}
\dot{\bar{x}}_{k+1}&=&\dot{x}_{k+1}\\
&=& Ax_{k+1}+Bu_{k+1} \tag{3}
\end{eqnarray}

このことを利用して式(2)を微分します.

\begin{eqnarray}
\dot{\bar{x}}_{k+1}&=&a \\
a&=& Ax_{k+1}+Bu_{k+1} \tag{4}
\end{eqnarray}

次に時刻\(t_{k+1}\)で実際のデータ(\(x_{k+1}\))と離散化したもの(\(\bar{x}_{k+1}\))が一致するので,これも式(2)に代入します.

\begin{eqnarray}
\bar{x}_{k+1}&=&(Ax_{k+1}+Bu_{k+1}) t_{k+1}+b\\
x_{k+1}&=&(Ax_{k+1}+Bu_{k+1}) t_{k+1}+b\\
b &=& x_{k+1}-(Ax_{k+1}+Bu_{k+1}) t_{k+1} \tag{5}
\end{eqnarray}

以上で傾き\(a\)と切片\(b\)を求めることができました.
その結果,1次関数は以下のようになりました.

\begin{eqnarray}
\bar{x}&=&(Ax_{k+1}+Bu_{k+1}) t + x_{k+1}-(Ax_{k+1}+Bu_{k+1}) t_{k+1} \\
&=& x_{k+1}+(Ax_{k+1}+Bu_{k+1}) (t-t_{k+1}) \tag{6}
\end{eqnarray}

 

積分項を求める

先ほど求めた式(6)の1次関数で理論式の積分項を求めます.

理論式(1)にもあるように1次関数(6)を時刻\(t_k\)から\(t_{k+1}\)まで積分します・

\begin{eqnarray}
\int_{t_k}^{t_{k+1}}\{\bar{x}(t)\}dt &=& \int_{t_k}^{t_{k+1}}\{x_{k+1}+(Ax_{k+1}+Bu_{k+1}) (t-t_{k+1})\}dt\\
&=& \left[x_{k+1} t+(Ax_{k+1}+Bu_{k+1}) \left(\frac{1}{2} t^{2}-t_{k+1} t\right)\right]^{t_{k+1}}_{t_{k}}\\
&=& x_{k+1} (t_{k+1}-t_k)+(Ax_{k+1}+Bu_{k+1}) \left\{\frac{1}{2} (t_{k+1}^{2}-t_k^{2})-t_{k+1} (t_{k+1}-t_k)\right\} \\
&=& x_{k+1} (t_{k+1}-t_k)+(Ax_{k+1}+Bu_{k+1}) \left\{\frac{1}{2} (t_{k+1}+t_k)(t_{k+1}-t_k)-t_{k+1} (t_{k+1}-t_k)\right\} \\
&=& x_{k+1} (t_{k+1}-t_k)+(Ax_{k+1}+Bu_{k+1}) \left[(t_{k+1}-t_k)\left\{\frac{1}{2} (t_{k+1}+t_k)-t_{k+1} \right\}\right] \\
&=& x_{k+1} (t_{k+1}-t_k)-\frac{1}{2}(Ax_{k+1}+Bu_{k+1}) (t_{k+1}-t_k)^2 \tag{7}
\end{eqnarray}

上式において\(t_{k+1}-t_k\)はデータのサンプリングを間隔を表しています.このサンプリングの間隔を\(T_s\)と置くと式(7)は以下のようになります.

\begin{eqnarray}
\int_{t_k}^{t_{k+1}}\{\bar{x}(t)\}dt &=& x_{k+1} T_s-\frac{1}{2}(Ax_{k+1}+Bu_{k+1}) T_s^2 \tag{8}
\end{eqnarray}

以上によって理論式(1)の積分項を求めることができました.

 

理論式に代入する

積分項を求めることができたので,あとは理論式に代入するだけです.

\begin{eqnarray}
x_{k+1}&=&x_k+A\int_{t_k}^{t_{k+1}}(x(t))dt+T_s Bu_k \\
&=& x_k+A\left\{x_{k+1} T_s-\frac{1}{2}(Ax_{k+1}+Bu_{k+1}) T_s^2\right\}+T_s Bu_k\\
&=& x_k+Ax_{k+1} T_s-\frac{1}{2}A(Ax_{k+1}+Bu_{k+1}) T_s^2+T_s Bu_k\\
&=& x_k+Ax_{k+1} T_s-\frac{1}{2}A^2 x_{k+1}T_s^2-\frac{1}{2}ABu_{k+1} T_s^2+T_s Bu_k\\
x_{k+1}-Ax_{k+1} T_s+\frac{1}{2}A^2 x_{k+1}T_s^2&=& x_k-\frac{1}{2}ABu_{k} T_s^2+T_s Bu_k\\
\left(I-AT_s+\frac{1}{2}A^2 T_s^2\right)x_{k+1}&=& x_k-\left(\frac{1}{2}AT_s+I\right)T_s Bu_{k}\\
x_{k+1}&=& \left(I-AT_s+\frac{1}{2}A^2 T_s^2\right)^{-1}\left\{x_k-\left(\frac{1}{2}AT_s+I\right)T_s Bu_{k}\right\}\tag{9}
\end{eqnarray}

上式の途中で\(u_{k+1}\)が\(u_{k}\)になっているのはこちらの記事で解説したように\(t_k \leq t<t_{k+1}\)の区間では制御入力はゼロ次ホールダによって一定値となるためです.

以上が状態方程式を1次関数で近似した離散化した式になります.

 

まとめ

この記事では1次関数を「時刻\(t_k\)で\(x\)と\(\dot{x}\)が離散化したものと実際のもので一致する」という条件で決定して,その1次関数で近似して状態方程式を離散化しました.

\begin{eqnarray}
x_{k+1}&=& \left(I-AT_s+\frac{1}{2}A^2 T_s^2\right)^{-1}\left\{x_k-\left(\frac{1}{2}AT_s+I\right)T_s Bu_{k}\right\}
\end{eqnarray}

 

続けて読む

今回の記事で1次関数で近似して離散化する方法は最後になります.以下の記事ではこれまで解説してきた1次関数で近似したときの精度について解説しているので続けて読んでみてください.

「こちらの記事は現在準備中です」

Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.

YouTubeでも制御工学や電子工作などの解説をしているので,ぜひのぞいてみてください.

それでは最後まで読んでいただきありがとうございました.

コメント

タイトルとURLをコピーしました