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

制御工学

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

離散化を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\)で\(x\)と\(\dot{x}\)が離散化したものと実際のもので一致する

 

1次関数を求める

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

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

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

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

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

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

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

\begin{eqnarray}
\dot{\bar{x}}_k&=&\dot{x}_k\\
&=& Ax_k+Bu_k \tag{3}
\end{eqnarray}

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

\begin{eqnarray}
\dot{\bar{x}}_k&=&a \\
a&=& Ax_k+Bu_k \tag{4}
\end{eqnarray}

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

\begin{eqnarray}
\bar{x}_k&=&(Ax_k+Bu_k) t_k+b\\
x_k&=&(Ax_k+Bu_k) t_k+b\\
b &=& x_k-(Ax_k+Bu_k) t_k \tag{5}
\end{eqnarray}

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

\begin{eqnarray}
\bar{x}&=&(Ax_k+Bu_k) t + x_k-(Ax_k+Bu_k) t_k \\
&=& x_k+(Ax_k+Bu_k) (t-t_k) \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+(Ax_k+Bu_k) (t-t_k)\}dt\\
&=& \left[x_{k} t+(Ax_{k}+Bu_{k}) \left(\frac{1}{2} t^{2}-t_{k} t\right)\right]^{t_{k+1}}_{t_{k}}\\
&=& x_{k} (t_{k+1}-t_k)+(Ax_{k}+Bu_{k}) \left\{\frac{1}{2} (t_{k+1}^{2}-t_k^{2})-t_{k} (t_{k+1}-t_k)\right\} \\
&=& x_{k} (t_{k+1}-t_k)+(Ax_{k}+Bu_{k}) \left\{\frac{1}{2} (t_{k+1}+t_k)(t_{k+1}-t_k)-t_{k} (t_{k+1}-t_k)\right\} \\
&=& x_{k} (t_{k+1}-t_k)+(Ax_{k}+Bu_{k}) \left[(t_{k+1}-t_k)\left\{\frac{1}{2} (t_{k+1}+t_k)-t_{k} \right\}\right] \\
&=& x_{k} (t_{k+1}-t_k)+\frac{1}{2}(Ax_{k}+Bu_{k}) (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} T_s+\frac{1}{2}(Ax_{k}+Bu_{k}) 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} T_s+\frac{1}{2}(Ax_{k}+Bu_{k}) T_s^2\right\}+T_s Bu_k\\
&=& x_k+Ax_{k} T_s+\frac{1}{2}A(Ax_{k}+Bu_{k}) T_s^2+T_s Bu_k\\
&=& x_k+Ax_{k} T_s+\frac{1}{2}A^2 x_{k}T_s^2+\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+T_s \left(I+\frac{1}{2}AT_s\right)Bu_k \tag{9}
\end{eqnarray}

以上が状態方程式を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)x_k+T_s \left(I+\frac{1}{2}AT_s\right)Bu_k
\end{eqnarray}

 

続けて読む

1次関数で近似して離散化する方法は他にもあり,以下の記事で解説しているので続けて読んでみてください.

離散化を1次近似で行う方法~その2~
みなさん,こんにちはおかしょです.前回に続いて離散化を1次近似で行う別の方法を詳しく解説していきます.この記事を読むと以下のようなことがわかる・できるようになります.制御対象や制御器を離散化する方法離散化を1次...

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

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

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

コメント

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