みなさん,こんにちは
おかしょです.
制御工学を学び,実際のロボットに設計した制御器を適用するには離散化という作業が必ず必要になります.
この記事をはじめとして,これから何回かに分けて制御対象を離散化する方法について解説していきます.
この記事を読むと以下のようなことがわかる・できるようになります.
- 離散化が必要な理由
- 離散化の理論式
- 離散化するための手法の種類
この記事を読む前に
この記事では状態方程式の解を使って離散化をする方法について解説します.
状態方程式の解の求め方をご存知ではない方は以下の記事で解説しているので先の読んでおくことをおすすめします.
離散化が必要な理由
冒頭でロボットに制御器を適用するには離散化が必要だと言いました.
なぜ離散化が必要なのかご存知でしょうか
ロボットを制御するためには制御入力の指令を出すマイコンが必要になります.
このマイコンがさまざまなセンサーから情報を入手し,モーターなどの駆動装置にどのくらいの電圧を印加するのか命令を出します.
しかし,このマイコン常にセンサーから情報を入手し続け,電圧を加え続けられるわけではありません.
マイコンは一定の周期に従って動作をします.
この周期が短ければ短いほど性能の良いマイコンと言うことができるのですが,周期的に動作するためどうしても離散的となってしまいます.
そのため,制御入力が離散的に印加されることを考慮して制御器を設計しなければロボットを制御できません.
そのため,制御対象を離散化してから制御器を設計する必要があります.
離散化の理論式
それでは離散化をするにはどうすればいいのかを解説していきます.
ここでは以下のような線形時不変システムを離散化します.
\[
\dot{x}=Ax+Bu \tag{1}
\]
マイコンを使用した場合は制御入力\(u\)はゼロ次ホールダによって生成されます.(ゼロ次ホールダについてはこちら)
これを式で表すと以下のようになります.
\[
u(t)=u_k \tag{2}
\]
ここで\(u_k\)というのはステップ数\(k\)での制御入力を意味します.
これによって以下の図のように青い線のように時間に対して連続で滑らかな線を描くことはなく,赤い線のように離散的なとびとびの値になります.
制御入力が\(u_k\)である時間\(t\)はマイコンの動作周期によって決まり,数式では以下のように表されます.
\[
t_k \leq t<t_{k+1} \tag{3}
\]
この時刻の間は制御入力は\(u_k\)ですが,次のステップの\(t_{k+1}<=t<t_{k+2}\)の間は制御入力が\(u(t)=u_{k+1}\)となります.
式(2)で表したような離散時間表現を式(1)でも行うことが離散化の目的です.
式(1)は微分方程式で表されています.
微分方程式を使用して時間がたった後の状態を知るには,微分方程式を積分して,その値を現在の状態量に加えることで求めることができます.
つまり,時間がたった後の状態を1ステップ進んだ\(x_{k+1}\),現在の状態を\(x_k\)とすると以下のようになります.
\[
x_{k+1}=x_k+\int_{t_k}^{t_{k+1}}(Ax(t)+Bu(t))dt \tag{4}
\]
ここで式(2)のように制御入力\(u(t)\)は表されるので
\[
x_{k+1}=x_k+A\int_{t_k}^{t_{k+1}}(x(t))dt+T_s Bu_k \tag{5}
\]
積分すると長方形になります.ここで\(T_s\)はサンプリング時間\(t_{k+1}-t_k\)を表しています.
この式にある積分を解こうとすると状態方程式を積分したときと同様にネイピア数\(e\)が出てきてしまいます.
ネイピア数は無理数で永遠に続いていきます.計算をしようとしても終わりがありません.
そのため,積分をする前の式(5)の形が離散化の理論式ということになります.
このようなものの解を求めるにはある程度の近似を行う必要があります.
離散化手法の種類
式(5)を厳密に解くことはできないので近似をして解く必要があります.
この時どのようにして近似をするかで離散化の手法は分けられます.
1次の式で近似をしたり,2次や3次,もっと高次な式で近似をする方法があります.
最も一般的で知られているのがTustin変換というものです.
双一次変換というとピンとくる方もいるかもしれません.
この方法は,先ほどの積分の部分を台形則で計算するという近似方法で計算をします.
このように離散化の手法はたくさんありますが,高次な式で近似すればするほど離散化の精度は良くなりますがその分計算量が多くなってしまうので注意が必要です.
ベストなのは制度は必要最小限で計算量を少なくすることです.
まとめ
この記事では離散化の必要性やどのような手法があるのかを解説しました.
離散化を行うには以下の計算式によってできますが
\[
x_{k+1}=x_k+A\int_{t_k}^{t_{k+1}}(x(t))dt+T_s Bu_k \tag{5}
\]
積分をする際にネイピア数が出てきてしまうので近似が必要になるということはおさえておいてください.
このブログでは上記のような離散化手法の解説を行い,それぞれの手法の特徴や比較を解説していきます.
離散化について勉強している方は是非参考にしてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
YouTubeでも制御工学や電子工作などの解説をしているので,ぜひのぞいてみてください.
それでは最後まで読んでいただきありがとうございました.
コメント