はじめまして、りょーつといいます。高専出身の大学院2年生です。研究の専門は力学や機構学で、Qiitaでは主に制御工学や数学に関する記事を書いています。本稿はスクリュー理論の解説(布教)をする15個目の記事です。前回までの記事は以下のリンクを参照してください。
スクリュー理論① 外積の歪対称行列表現
スクリュー理論② 行列の指数関数
スクリュー理論③ 行列指数と回転行列の関係
スクリュー理論④ 回転行列の成分表示
スクリュー理論⑤ 回転行列による座標系の表現
スクリュー理論⑥ 剛体の速度・加速度の座標変換公式の導出
スクリュー理論⑦ 三次元空間における右手系の回転行列
スクリュー理論⑧ 回転行列による座標変換
スクリュー理論⑨ 回転行列によるベクトルの回転
スクリュー理論⑩ 回転行列と多様体の関係
スクリュー理論⑪ 同次変換行列の導入
スクリュー理論⑫ 同次変換行列による座標系の表現と基底変換
スクリュー理論⑬ 歪対称行列表現の回転座標変換
スクリュー理論⑭ 同次変換行列の微分とツイストの導入
スクリュー理論は剛体の運動を記述する方法で、ロボット工学などでよく使われています。日本の高専や大学ではDH法を使った記述を学ぶことが多いですが、国際的にはスクリュー理論を使った記述が一般的となってきているようです。スクリュー理論を扱う日本語の文献は少ないので、この記事が誰かの助けになればいいなと思います。
目次
1.はじめに
2.スクリューの導入と同次変換行列
3.おわりに
1. はじめに
今回の記事では、スクリュー$\boldsymbol{\zeta}$の導入と、行列指数を用いて同次変換行列を表現する方法についてまとめていきます。
前回の記事では角速度ベクトル$\boldsymbol{\omega}$と速度$\boldsymbol{v}$を1つにまとめたベクトルであるツイスト$\boldsymbol{\nu}$を導入しました。ツイストにはスタンダードツイスト$\boldsymbol{\nu_s}$とボディツイスト$\boldsymbol{\nu_b}$の2種類があることを確認し、それぞれに対して以下の関係がなりたつことを解説しました。
\frac{dT_{sb}}{dt}
=
[\boldsymbol{\nu_s}]
T_{sb}
\tag{1}
\frac{dT_{sb}}{dt}
=
T_{sb}
[\boldsymbol{\nu_b}]
\tag{2}
ただし、$[\boldsymbol{\nu_s}]$と$[\boldsymbol{\nu_b}]$は各ツイストの行列表現であり、以下のように定義されます。
[\boldsymbol{\nu_s}]
=
\begin{bmatrix}
[\boldsymbol{\omega_s}] & \boldsymbol{v_s}\\
\boldsymbol{0}^T & 0\\
\end{bmatrix}
\tag{3}
[\boldsymbol{\nu_b}]
=
\begin{bmatrix}
[\boldsymbol{\omega_b}] & \boldsymbol{v_b}\\
\boldsymbol{0}^T & 0\\
\end{bmatrix}
\tag{4}
本記事では特に(1)の微分方程式を解くことで、同次変換行列を行列指数で表現することを目的とします。かなり複雑な内容になりますが、理論の流れは回転行列の行列指数と同じですので、こちらの流れをしっかり押さえておいていただけると分かりやすいです。
2. スクリューの導入と同次変換行列
まずはシンプルに(1)の微分方程式を解いてみましょう。$4\times4$行列になっていますが、回転行列の微分方程式と解き方は同じです。ボディ座標系$\Sigma_b$の$t = 0$における初期状態を$T_{sb}(0)=M_{sb}$とするならば、(1)式の解は以下のように与えられます。
T_{sb}(t)
=
e^{[\boldsymbol{\nu_s}]t}
M_{sb}
\tag{5}
念のため検算をしておきます。(5)式を1回微分すると
\frac{dT_{sb}}{dt}
=
[\boldsymbol{\nu_s}]
e^{[\boldsymbol{\nu_s}]t}
M_{sb}
\tag{6}
になります。一方、(5)式を(1)式の右辺に代入すると
[\boldsymbol{\nu_s}]
T_{sb}
=
[\boldsymbol{\nu_s}]
e^{[\boldsymbol{\nu_s}]t}
M_{sb}
\tag{7}
が得られます。したがって、(5)式を(1)式に代入した場合、(1)式の微分方程式がなりたつため、(5)式は解として妥当であると考えられます。
いちおう本記事の目的である、「同次変換行列を行列指数で表現する」というのは(5)式によって達成されましたが、1つ問題が残ります。それは、時刻$t$が明確に定義できていないことです。
そもそも同次変換行列は座標系間の幾何的な関係を表す行列であるため、変数は時刻$t$ではなく、なんらかの幾何的なパラメータであることが望ましいです。
そこで、回転行列のときと同様に、ツイスト$\boldsymbol{\nu_s}$の正規化を行います。回転軸$\boldsymbol{\omega_s}$を正規化するベクトルを$\boldsymbol{\hat{\omega_s}}$、角速度を$\omega = ||\boldsymbol{\omega_s}||$とするならば、ツイスト$\boldsymbol{\nu_s}$はあるベクトル$\boldsymbol{q}$を用いて以下のように正規化できます。
\boldsymbol{\nu_s}
=
\begin{bmatrix}
\boldsymbol{\omega_s} \\
\boldsymbol{v_s} \\
\end{bmatrix}
=
\begin{bmatrix}
\omega \boldsymbol{\hat{\omega_s}} \\
-\omega \boldsymbol{\hat{\omega_s}} \times \boldsymbol{q} + h \omega \boldsymbol{\hat{\omega_s}}\\
\end{bmatrix}
=
\begin{bmatrix}
\boldsymbol{\hat{\omega_s}} \\
- \boldsymbol{\hat{\omega_s}} \times \boldsymbol{q} + h \boldsymbol{\hat{\omega_s}}\\
\end{bmatrix}
\omega_s
\tag{8}
少し分かりづらいので、速度$\boldsymbol{v_s}$を図1に示すように回転軸$\boldsymbol{\omega_s}$に垂直な成分$\boldsymbol{v_{sn}}$と平行な成分$\boldsymbol{v_{st}}$に分解して考えてみましょう。
図1 速度$\boldsymbol{v_s}$の分解
まずは、平行な成分$\boldsymbol{v_{st}}$について考えます。$\boldsymbol{v_{st}}$は$\boldsymbol{\omega_s}$に平行なので$\boldsymbol{v_{st}}\ //\ \boldsymbol{\omega_s}$であり、あるスカラー量$h$を用いて以下のように表されます。
\boldsymbol{v_{st}}
=
h\boldsymbol{\omega_s}
=
h \omega \boldsymbol{\hat{\omega_s}}
\tag{9}
スカラー量$h$は角速度$\boldsymbol{\omega_s}$と速度$\boldsymbol{v_{st}}$の大きさの比から簡単に求まります。
また、垂直な成分$\boldsymbol{v_{sn}}$についても考えてみましょう。垂直な成分$\boldsymbol{v_{sn}}$について$\boldsymbol{v_{sn}} \perp \boldsymbol{\omega_s}$がなりたつので、これらの双方に対して垂直な、あるベクトル$\boldsymbol{q}$($\boldsymbol{q} \perp \boldsymbol{\omega_s}$、$\boldsymbol{q} \perp \boldsymbol{v_{sn}}$)を考えれば、以下の関係が得られます。なお、ベクトルの原点はボディ座標系の初期状態$M_{sb}$にあるとします。
\boldsymbol{v_{sn}}
=
\boldsymbol{\omega_s}\times(-\boldsymbol{q})
=
- \omega \boldsymbol{\hat{\omega_s}}\times \boldsymbol{q}
\tag{10}
なお、ベクトル$\boldsymbol{q}$の向きと大きさは、回転運動に関する外積の関係より、以下のように求めることができます。(10)~(13)式の図的イメージを図2にまとめておきました。
図2 速度$\boldsymbol{v_{sn}}$と角速度$\boldsymbol{\omega_s}$の図的イメージ
\boldsymbol{q}
\ / / \
\boldsymbol{\omega_s}\times(\boldsymbol{v_{sn}})
\tag{12}
||\boldsymbol{v_{sn}}||
=
||\boldsymbol{\omega_s}||
||\boldsymbol{q}||
\therefore
||\boldsymbol{q}||
=
\frac{||\boldsymbol{v_{sn}}||}{||\boldsymbol{\omega_s}||}
\tag{13}
厳密に考えるとベクトル$\boldsymbol{q}$の解は無数にあるのですが、直観的な説明として納得いただけると助かります。
ざっくりとした説明にはなりましたが、(9)~(13)式を踏まえることで、ツイスト$\boldsymbol{\nu_s}$は(8)式のように正規化することができます。ここで、正規化されたスタンダードツイストをスクリューと呼びます。基準座標系$\Sigma_s$のスクリューは記号$\boldsymbol{\zeta}$で表されることが多いです。
数式にまとめると、スタンダードツイスト$\boldsymbol{\nu_s}$とスクリュー$\boldsymbol{\zeta}$には以下の関係があります。
\boldsymbol{\nu_s}
=
\boldsymbol{\zeta}\
\omega
\tag{14}
ここで重要なのは、スクリュー$\boldsymbol{\zeta}$の中身を(8)式で計算するのではなく、あくまでもツイスト$\boldsymbol{\nu_s}$を正規化したものであると捉えることです。なぜなら$\boldsymbol{\omega_s}\to\boldsymbol{0}$の場合には$h$が発散するためです。
詳細な議論は置いておくとして、やっとスクリュー理論の主役であるスクリュー$\boldsymbol{\zeta}$が登場しました。速度$\boldsymbol{v_s}$が(9)式と(10)式の合成で表現される点が、ねじの回転運動と軸方向への並進運動の合成に類似しているため、スクリューという名前が付けられたと聞きました。
雑にまとめると、スクリュー理論は、座標系どうしがすべてねじ対偶で繋がっているとみなして座標変換を行う手法であり、(14)式の正規化がとても重要になります。
ここまでの議論を図3にまとめました。
図3 スクリュー$\boldsymbol{\zeta}$のイメージ
これらを踏まえて(5)式から時刻の情報$t$を消去しましょう。(3)式において角速度$\boldsymbol{\omega_s}$は一定であるため、回転角度$\theta$と角速度$\omega$には以下の関係がなりたちます。
\theta
=
\int_{0}^{t} \omega dt
=
\omega t
\tag{15}
したがって、(14)式と(15)式の関係を(5)式に代入すると
T_{sb}
=
e^{[\boldsymbol{\nu_s}]t}
M_{sb}
=
e^{[\boldsymbol{\zeta}]\omega t}
M_{sb}
=
e^{[\boldsymbol{\zeta}]\theta}
M_{sb}
\tag{16}
のように幾何パラメータ$\theta$で同次変換行列$T_{sb}$を記述することができました。
では最後に、同次変換行列の回転角$\theta$に関する微分について考えてみましょう。シンプルに微分すると以下の微分方程式が得られます。
\frac{dT_{sb}}{d\theta}
=
[\boldsymbol{\zeta}]
e^{[\boldsymbol{\zeta}]\theta}
M_{sb}
=
[\boldsymbol{\zeta}]
T_{sb}
\therefore
\frac{dT_{sb}}{d\theta}
=
[\boldsymbol{\zeta}]
T_{sb}
\tag{17}
(17)式より、微分方程式の形は正規化する前と後でほぼ同じであることが分かります。当たり前かもしれませんが、これは回転行列$R_{sb}$に対して以下の微分方程式が成り立つことと対応しています。
\therefore
\frac{dR_{sb}}{d\theta}
=
[\boldsymbol{\hat{\omega_s}}]
R_{sb}
\tag{18}
3. おわりに
本記事ではスクリュー$\boldsymbol{\zeta}$を導入することにより、同次変換行列$T_{sb}$を幾何パラメータの行列指数で表現する方法をまとめました。特にスクリュー$\boldsymbol{\zeta}$の概念はスクリュー理論を記述する上で非常に重要な概念となります。スクリューはツイスト$\boldsymbol{\nu}$を正規化した概念であるため、その成分はツイスト$\boldsymbol{\nu}$と同様、座標系の取り方に依存します。
来週はスクリューやツイスト$\boldsymbol{\nu}$の座標変換に相当する「アジョイント変換」についてまとめようと思います。アジョイント変換は、スクリュー理論によってロボットの速度運動学を記述する際に非常に重要となります。
徐々に複雑な内容になってきましたが、最後まで読んでいただきありがとうございました。