はじめまして、りょーつといいます。高専出身の大学院2年生です。研究の専門は力学や機構学で、Qiitaでは主に制御工学や数学に関する記事を書いています。本稿はスクリュー理論の解説(布教)をする26個目の記事です。前回までの記事は以下のリンクを参照してください。
スクリュー理論① 外積の歪対称行列表現
スクリュー理論② 行列の指数関数
スクリュー理論③ 行列指数と回転行列の関係
スクリュー理論④ 回転行列の成分表示
スクリュー理論⑤ 回転行列による座標系の表現
スクリュー理論⑥ 剛体の速度・加速度の座標変換公式の導出
スクリュー理論⑦ 三次元空間における右手系の回転行列
スクリュー理論⑧ 回転行列による座標変換
スクリュー理論⑨ 回転行列によるベクトルの回転
スクリュー理論⑩ 回転行列と多様体の関係
スクリュー理論⑪ 同次変換行列の導入
スクリュー理論⑫ 同次変換行列による座標系の表現と基底変換
スクリュー理論⑬ 歪対称行列表現の回転座標変換
スクリュー理論⑭ 同次変換行列の微分とツイストの導入
スクリュー理論⑮ スクリューの導入と行列指数による同次変換行列の表現
スクリュー理論⑯ アジョイント変換
スクリュー理論⑰ 回転行列の行列対数
スクリュー理論⑱ 回転行列の積分
スクリュー理論⑲ 行列指数を用いた同次変換行列の成分表示
スクリュー理論⑳ 同次変換行列の行列対数
スクリュー理論㉑ シリアルリンクロボットアームの順運動学
スクリュー理論㉒ 円筒座標ロボットアームの順運動学
スクリュー理論㉓ 円筒座標ロボットアームのヤコビアン
スクリュー理論㉔ ボディ座標系を用いた順運動学
スクリュー理論㉕ スクリュー理論㉕ アジョイント変換の図的イメージ
スクリュー理論は剛体の運動を記述する方法で、ロボット工学などでよく使われています。日本の高専や大学ではDH法を使った記述を学ぶことが多いですが、国際的にはスクリュー理論を使った記述が一般的となってきているようです。スクリュー理論を扱う日本語の文献は少ないので、この記事が誰かの助けになればいいなと思います。
目次
1.はじめに
2.スクリューの指数写像と基底変換
3.順運動学とアジョイント変換
4.おわりに
1. はじめに
今週の記事では、順運動学とアジョイント変換の関係をまとめます。特に順運動学によってスクリュー$\boldsymbol{\zeta}$の発生源が移動した際に、スクリューをどう表現するのか理解できるようにしたいなと考えています。
とても抽象的で自分自身も理解が追い付いていないので、少し雑な文章になってしまうかもしれませんが頑張って書きますのでお許しください。本記事の内容は、のちのちヤコビアンの計算をする際に使用します。
アジョイント変換について軽く復習しておくと理解しやすいと思います。
2. スクリューの指数写像と基底変換
いつものごとく基準座標系$\Sigma_s$を考えます。このとき、スクリュー$\boldsymbol{\zeta} \in \mathbb{R}^6$の行列表現の指数写像$e^{[\boldsymbol{\zeta}]\theta}$が同次変換行列であることはこれまでに何度か解説してきました。その中身は
e^{[\boldsymbol{\zeta}]\theta}
=
\begin{bmatrix}
e^{[\boldsymbol{\hat{\omega_s}}]\theta} & G(\theta) \boldsymbol{v_s} \\
\boldsymbol{0}^T & 1 \\
\end{bmatrix}
\in
\mathbb{R}^4 \times \mathbb{R}^4
\tag{1}
[\boldsymbol{\zeta}]
=
\begin{bmatrix}
[\boldsymbol{\hat{\omega_s}}] & v_s \\
\boldsymbol{0}^T & 0 \\
\end{bmatrix}
\tag{2}
G(\theta)
=
I \theta
+
(1 - \cos{\theta}) [\boldsymbol{\hat{\omega_s}}]
+
(\theta - \sin{\theta})[\boldsymbol{\hat{\omega_s}}]^2
\tag{3}
となることはこちらの記事で解説しています。
これについて、スクリュー理論を用いた順運動学との対応関係から、(1)式の同次変換行列の図的イメージを解説していきます。
スクリュー$\boldsymbol{\zeta}$によって変換される初期の位置姿勢を$M$とします。$M$は基準座標系$\Sigma_s$のもとで表現されている点に注意してください。スクリュー$\boldsymbol{\zeta}$の作用によって移動したあとの姿勢を$M'$とすると、順運動学と同じ考え方により以下の関係が得られます。
M'
=
e^{[\boldsymbol{\zeta}]\theta}
M
\tag{4}
(4)式の関係について図1にまとめておきました。図1では分かりやすさのために平面上の回転を表記していますが、一般には3次元空間で似たようなことが起きています。
図1 同次変換行列$e^{[\boldsymbol{\zeta}]\theta}$による基底変換
ここで、初期位置姿勢$M$が基準座標系の座標軸とぴったり一致している場合を考えてみましょう。このとき、初期位置姿勢$M$は単位行列$I$となるため、以下のような関係が得られます。
M'
=
e^{[\boldsymbol{\zeta}]\theta}
\tag{5}
つまり、行列指数$e^{[\boldsymbol{\zeta}]\theta}$は、基準座標系$\Sigma_s$そのものをスクリュー$\boldsymbol{\zeta}$によって回転させたときに得られる座標系の位置姿勢を表していると捉えることができます!
図2 行列指数$e^{[\boldsymbol{\zeta}]\theta}$の図的イメージ
3. 順運動学とアジョイント変換
次に順運動学によってスクリューの発生源(ロボットでいう関節)の位置姿勢が移動した際にスクリューがどのように記述されるのかについてまとめていきたいと思います。
分かりやすい例として2つの回転関節を有するロボットアームを考えてみましょう。スクリューを根元の関節から順に$\boldsymbol{\zeta_1}$、$\boldsymbol{\zeta_2}$とします。初期状態におけるエンドエフェクタの位置姿勢を$M$、各回転軸の位置を$\boldsymbol{p_1}$、$\boldsymbol{p_2}$とすれば、各スクリューの値は以下のように計算できるはずです。(図3参照)
図3 2つの回転関節を有するロボットアーム
\boldsymbol{\zeta_1}
=
\begin{bmatrix}
\boldsymbol{\hat{\omega_1}} \\
\boldsymbol{\hat{\omega_1}} \times (-\boldsymbol{p_1}) \\
\end{bmatrix}
\tag{6}
\boldsymbol{\zeta_2}
=
\begin{bmatrix}
\boldsymbol{\hat{\omega_2}} \\
\boldsymbol{\hat{\omega_2}} \times (-\boldsymbol{p_2}) \\
\end{bmatrix}
\tag{7}
これらは以前までの記事でなんども紹介してきたので理解しやすいと思いますが、ロボットアームの各関節の角度が$\theta_1$、$\theta_2$になった場合のスクリュー$\boldsymbol{\zeta_1}'$と$\boldsymbol{\zeta_2}'$について考えてみようと思います。図4にこのときの問題設定をまとめました。
図4 2つの回転関節を有するロボットアーム(各関節回転後)
図4より、スクリュー$\boldsymbol{\zeta_1}'$は回転軸の位置姿勢が初期状態から変化しないため、
\boldsymbol{\zeta_1}'
=
\boldsymbol{\zeta_1}
\tag{8}
となります。一方で、図4のシチュエーションでは、$\boldsymbol{\zeta_2}$は図5に示すような座標系の原点に生じるツイストを意味してしまうため、適切なアジョイント変換によって基準座標系$\Sigma_s$の原点に戻してあげる必要があります。図5に示す座標系を$\Sigma_s'$と定義すると、$\Sigma_s'$は$\Sigma_s$をスクリュー$\boldsymbol{\zeta_1}$によって回転させて得られる座標系であると捉えることができます。つまり、2章の内容を用いると$\Sigma_s'$の位置姿勢は同次変換行列$e^{[\boldsymbol{\zeta_1}]\theta_1}$で表すことができます。したがってアジョイント変換の引数として$e^{[\boldsymbol{\zeta_1}]\theta_1}$を用いることで、スクリュー$\boldsymbol{\zeta_2}'$は以下のように計算できます。
\boldsymbol{\zeta_2}'
=
Ad_{e^{[\boldsymbol{\zeta_1}]\theta_1}}
\boldsymbol{\zeta_2}
\tag{9}
図5 回転後のロボットアームにおけるスクリュー$\boldsymbol{\zeta_2}$の図的イメージ
察しがいい方はお気づきかもしれませんが、(9)式を$n$関節に拡張すると以下の関係が得られます。
\boldsymbol{\zeta_n}'
=
Ad_{e^{[\boldsymbol{\zeta_1}]\theta_1}}
Ad_{e^{[\boldsymbol{\zeta_2}]\theta_2}}
\cdots
Ad_{e^{[\boldsymbol{\zeta_{n-1}}]\theta_{n-1}}}
\boldsymbol{\zeta_n}
\tag{10}
(10)式の導出は次回の記事で丁寧に行おうと思いますが、考え方は基本的に同じです。(10)式を使えば、初期状態だけでなく、任意のコンフィギュレーション空間におけるロボットのスクリューについて解析ができそうですよね。これは正しくて、ヤコビアンや特異姿勢について解析する際に(10)式がたくさん出てきます。これらは来週まとめて解説します。
4. おわりに
今週の記事では、順運動学によって発生源が移動したスクリューをアジョイント変換で表現する方法について解説しました。原点が移動するという、若干気味の悪いイメージが必要になりますが、マスターすると強力な武器になると思います。
来週は今週の記事の内容を応用して、(10)式の導出と可能であればスクリュー理論の枠組みにおけるヤコビアンについて解説していこうと思います。
今週も最後まで読んでいただきありがとうございました~