みなさん,こんにちは
おかしょです.
今回は倒立振子の運動方程式を線形化しようと思います.
非線形の運動方程式を線形方程式に変換する方法などを解説するので,ぜひ読んでみてください.
この記事を読むと以下のようなことがわかる・できるようになります.
- 線形化とは
- 線形化をする理由
- 線形化をする方法
この記事を読む前に
この記事では二輪型倒立振子の運動方程式を利用して,線形化する方法を解説します.
二輪型倒立振子の運動方程式は非線形になるのですが,以下の記事で導出方法を解説しているのでそちらを参考にしてください.
線形化とは
そもそも線形とはどういう意味かというと,すべての文字の次数が1で表される式のことを言います.
例えば,以下のような式で表されるものを線形であると言えます.
$$ y = x $$
$$ y = x_{1}+2x_{2} $$
また,以下のような式で表されるものは非線形であると言えます.
$$ y = x^{2} $$
$$ y = \sin x +\cos x $$
このような非線形の式はある条件を加えることで,線形の式に近似することができます.
非線形の式を線形の式に近似することを線形化と言います.
例えば,先程の例で挙げた非線形の式の二つ目を線形化してみます.
ここで,線形化を行うにはある条件が必要だと述べました.
この条件というのは,ある状態量を微小だと仮定することです.
この例の場合は\(x\)が微小にしか変化しないとします.
この条件を式で表すと以下のようになります.
$$ |x| << 1 $$
このとき,三角関数は以下のように近似できます.
$$ \sin x \approx x,\ \cos x \approx 1 $$
このように線形近似をすると,先程の非線形方程式は以下のように線形化されます.
$$ y = 1 $$
このように,非常に単純な線形の式で表すことができます.
しかし,先程用いた条件である\(x\)が微小ではなくなると,この線形の式は本来の非線形の式とは異なってしまうので注意が必要です.
二輪型倒立振子を線形化する
ここでも,線形化を行うためにある条件を定義します.
二輪型倒立振子の場合は,倒立状態を維持できれば振子の傾き\(\theta\)は微小であると言えます.
また,振子の傾き\(\theta\)が微小であれば,倒立振子は移動をする必要がないのでタイヤの回転角度\(\phi\)も微小だと言えます.
このことから,それらの状態量の微分値の2乗や三角関数などを線形化すると以下のようになります.
$$ \dot{\theta}^{2} \approx 0, \ \dot{\phi}^{2} \approx 0,\ \sin \theta \approx \theta,\ \cos \theta \approx 1 $$
これを使用して,二輪型倒立振子の運動方程式を線形化すると以下のようになります.
\begin{eqnarray}
A_{1} &=& (m_{t}+m_{p}) r^2+m_{p}rL +J_{t} \\
A_{2} &=& (m_{t}+m_{p})r^{2}+2m_{p}rL+m_{p}L^{2}+J_{t}+J_{p}\\
A_{3} &=& m_{p}gL\theta -\mu_{\theta} \dot{\theta}\\
B_{1} &=& (m_{t}+m_{p}) r^2 +J_{t}\\
B_{2} &=& (m_{t}+m_{p})r^{2}+m_{p}rL+J_{t}\\
B_{3} &=& -\mu_{\phi} \dot{\phi }\\
\end{eqnarray}
\begin{eqnarray}
\ddot{\phi} &=& \frac{A_{3}B_{2}-A_{2}B_{3}}{A_{1}B_{2}-A_{2}B_{1}}-\frac{A_{2}}{A_{1}B_{2}-B_{1}A_{2}}\tau\\
\ddot{\theta} &=& \frac{A_{3}B_{1}-A_{1}B_{3}}{A_{2}B_{1}-A_{1}B_{2}}-\frac{A_{1}}{A_{2}B_{1}-A_{1}B_{2}}\tau\\
\end{eqnarray}
ぜひ,こちらに書かれている非線形運動方程式と見比べてみてください.
これを状態方程式で表すと以下のようになります.
\begin{eqnarray}
\frac{d}{dt}
\begin{bmatrix}
\phi\\
\dot{\phi}\\
\theta\\
\dot{\theta}\\
\end{bmatrix}
=
\begin{bmatrix}
0&1 & 0 & 0\\
0 & -\frac{\mu_{\phi}A_{2}}{A_{1}B_{2}-A_{2}B_{1}} & -\frac{m_{p}gLB_{2}}{A_{1}B_{2}-A_{2}B_{1}} & -\frac{\mu_{\theta}B_{2}}{A_{1}B_{2}-A_{2}B_{1}}\\
0&0 & 0 & 1\\
0 & -\frac{\mu_{\phi}A_{1}}{A_{2}B_{1}-A_{1}B_{2}} & -\frac{m_{p}gLB_{1}}{A_{2}B_{1}-A_{1}B_{2}} & -\frac{\mu_{\theta}B_{1}}{A_{2}B_{1}-A_{1}B_{2}}\\
\end{bmatrix}
\begin{bmatrix}
\phi\\
\dot{\phi}\\
\theta\\
\dot{\theta}\\
\end{bmatrix}
+
\begin{bmatrix}
0\\
-\frac{A_{2}}{A_{1}B_{2}-A_{2}B_{1}}\\
0\\
-\frac{A_{1}}{A_{2}B_{1}-A_{1}B_{2}}\\
\end{bmatrix}
\tau
\end{eqnarray}
見にくいかもしれませんが,倒立振子の線形状態方程式はこのようになっています.
線形化をする理由
以上のようにして,倒立振子の運動方程式を線形化することができるのですが,そもそもどうして線形化をする必要があるのでしょうか.
理由は単純で,非線形だと複雑な運動をしてしまうためよくわからないからです.
線形の運動方程式の場合は,数式的に複雑ではないため制御器を設計するのも比較的容易です.
そのため,制御工学において非線形制御よりも線形制御の方が圧倒的に理論が確立されています.
そのため,システムの運動をある条件のもとに固定して線形化を行い,線形制御器を搭載する方が確実に安全な制御ができます.
とは言っても,大きな姿勢変化を伴う動きを要求した場合は,線形運動の範囲を超えてしまうため非線形制御が必要となってしまいます.
まとめ

この記事では,非線形で表される式を線形化する方法を二輪型倒立振子を用いて解説しました.
線形化には条件があるので,その条件下では効果を発揮しますが条件を外れた場合は効果を発揮できなくなってしまいます.
そのようなときは非線形制御が必要となり,現在も多くの研究者の方々が非線形制御器の設計を行っています.
私もそのうちの一人です.
条件を外れてしまった場合は困ってしまいますが,条件下では線形制御器が使用できるので,今後は今回求めた線形の運動方程式を用いて線形制御器を設計していこうと思います.
続けて読む
以下の記事ではこの記事で求めた線形化した運動方程式を使ってP制御をしています.
ぜひ続けて読んでみてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
それでは最後まで読んでいただきありがとうございました.
コメント