はじめまして、りょーつといいます。高専出身の大学院2年生です。研究の専門は力学や機構学で、Qiitaでは主に制御工学や数学に関する記事を書いています。本稿はスクリュー理論の解説(布教)をする31個目の記事です。前回までの記事は以下のリンクを参照してください。
スクリュー理論① 外積の歪対称行列表現
スクリュー理論② 行列の指数関数
スクリュー理論③ 行列指数と回転行列の関係
スクリュー理論④ 回転行列の成分表示
スクリュー理論⑤ 回転行列による座標系の表現
スクリュー理論⑥ 剛体の速度・加速度の座標変換公式の導出
スクリュー理論⑦ 三次元空間における右手系の回転行列
スクリュー理論⑧ 回転行列による座標変換
スクリュー理論⑨ 回転行列によるベクトルの回転
スクリュー理論⑩ 回転行列と多様体の関係
スクリュー理論⑪ 同次変換行列の導入
スクリュー理論⑫ 同次変換行列による座標系の表現と基底変換
スクリュー理論⑬ 歪対称行列表現の回転座標変換
スクリュー理論⑭ 同次変換行列の微分とツイストの導入
スクリュー理論⑮ スクリューの導入と行列指数による同次変換行列の表現
スクリュー理論⑯ アジョイント変換
スクリュー理論⑰ 回転行列の行列対数
スクリュー理論⑱ 回転行列の積分
スクリュー理論⑲ 行列指数を用いた同次変換行列の成分表示
スクリュー理論⑳ 同次変換行列の行列対数
スクリュー理論㉑ シリアルリンクロボットアームの順運動学
スクリュー理論㉒ 円筒座標ロボットアームの順運動学
スクリュー理論㉓ 円筒座標ロボットアームのヤコビアン
スクリュー理論㉔ ボディ座標系を用いた順運動学
スクリュー理論㉕ アジョイント変換の図的イメージ
スクリュー理論㉖ 順運動学とアジョイント変換
スクリュー理論㉗ 空間ヤコビアン
スクリュー理論㉘ ボディヤコビアン
スクリュー理論㉙ 空間ヤコビアンの代数学的な導出
スクリュー理論㉚ Lie括弧積とアジョイント変換
スクリュー理論は剛体の運動を記述する方法で、ロボット工学などでよく使われています。日本の高専や大学ではDH法を使った記述を学ぶことが多いですが、国際的にはスクリュー理論を使った記述が一般的となってきているようです。スクリュー理論を扱う日本語の文献は少ないので、この記事が誰かの助けになればいいなと思います。
目次
1.はじめに
2.空間ヤコビアンとボディヤコビアンの欠点
3.実用的なヤコビアン
4.おわりに
1. はじめに
今回の記事では基準座標系$\Sigma_s$とボディ座標系$\Sigma_b$に加えて、エンドエフェクタ座標系$\Sigma_e$を定義し、実用的なヤコビアンの導出を行います。スクリュー理論ではこれまでに空間ヤコビアン$J_s$とボディヤコビアン$J_b$を紹介しましたが、本記事では第3のヤコビアン$J_e$を解説します。ただし、むしろ一般的に使用されているヤコビアンがこの$J_e$であり、DH法で導出するヤコビアンの計算結果もこの$J_e$と一致します。キャチロボのロボットでもこちらを使用しました。
2. 空間ヤコビアンとボディヤコビアンの欠点
いつもどおり、ロボットアームの根元に基準座標系$\Sigma_s$を、エンドエフェクタにロボットと共に移動するボディ座標系$\Sigma_b$を定義します。
このとき、各関節に配置されたスクリューによって静止座標系$\Sigma_s$で観測されるツイストを$\boldsymbol{\nu_s}$、ボディ座標系$\Sigma_b$で観測されるツイストを$\boldsymbol{\nu_b}$とします。
各関節の回転角度を$\theta_1, \theta_2, \cdots , \theta_n$、角速度を$\dot{\theta_1}, \dot{\theta_2}, \cdots , \dot{\theta_n}$とし、これらをまとめたベクトルを$\boldsymbol{\theta},\dot{\boldsymbol{\theta}}$とします。
\boldsymbol{\theta}
=
\begin{bmatrix}
\theta_1 \\
\theta_2 \\
\vdots \\
\theta_n \\
\end{bmatrix}
\tag{1}
\dot{\boldsymbol{\theta}}
=
\begin{bmatrix}
\dot{\theta_1 }\\
\dot{\theta_2 }\\
\vdots \\
\dot{\theta_n }\\
\\
\end{bmatrix}
\tag{2}
このとき、各ツイスト$\boldsymbol{\nu_s},\boldsymbol{\nu_b}$とベクトル$\dot{\boldsymbol{\theta}}$の間には以下の関係がなりたち、これらの表現行列$J_s$と$J_b$をそれぞれ空間ヤコビアン、ボディヤコビアンと呼びます。
\boldsymbol{\nu_s}
=
J_s
\dot{\boldsymbol{\theta}}
\tag{3}
\boldsymbol{\nu_b}
=
J_b
\dot{\boldsymbol{\theta}}
\tag{4}
各ヤコビアン$J_s,J_b$の具体的な中身については空間ヤコビアンとボディヤコビアンの記事をそれぞれ参照してください。
しかし、実用性の観点からはこれらのヤコビアンは使いづらい場面が多いです。まず、空間ヤコビアン$J_s$ですが、計算した結果得られるのが、基準座標系$\Sigma_s$の原点に生じるツイスト$\boldsymbol{\nu_s}$です。ロボットアームのエンドエフェクタを制御したいのに、根元に発生するツイストが計算できてもあまり嬉しくありません。
これに対して、ボディヤコビアン$J_b$は使えそうな気もしますが、1つ欠点があります。常にエンドエフェクタに生じるツイスト\boldsymbol{\nu_b}を観測できるのが利点ですが、その方向はボディ座標系$\Sigma_b$を基準としているため、基準座標系から見て同じ方向の速度が発生していても、ロボットの姿勢に応じて異なる結果が得られてしまいます。
ボディヤコビアン$J_b$はエンドエフェクタにカメラを搭載して人が遠隔操縦する、などの用途には使いやすそうですが、その他の用途ではあまり直感的ではありません。
したがって実用面ではこれらとは異なるヤコビアンが使用されているようです(しらんけど)。
3. 実用的なヤコビアン
本章では実用的なヤコビアンについて解説します。第2章で列挙した、空間ヤコビアンとボディヤコビアンの欠点をもとに、以下の2つの条件を満たすツイストが得られるようなヤコビアンを考えます。
① ツイストはエンドエフェクタで観測される
② 速度や角速度の向きは基準座標系$\Sigma_s$を基準とする。
つまり、エンドエフェクタと共に移動しながらも、姿勢は基準座標系$\Sigma_s$と同じようなエンドエフェクタ座標系$\Sigma_e$を新しく定義し、これをもとにツイスト$\boldsymbol{\nu_e}$を得るようなヤコビアン$J_e$を求めればよいのです。図1にエンドエフェクタ座標系$\Sigma_e$のイメージをまとめました。
図1 エンドエフェクタ座標系$\Sigma_e$
ここで、ヤコビアンがアジョイント変換可能であることを利用します。たとえば空間ヤコビアン$J_s$とボディヤコビアン$J_b$の関係は基準座標系$\Sigma_s$からみたボディ座標系$\Sigma_b$の位置姿勢をまとめた同次変換行列$T_{sb}$とアジョイント変換を用いて以下のように記述できます。
J_s
=
Ad_{T_{sb}}
J_b
\tag{5}
ということは、エンドエフェクタ座標系$\Sigma_e$からみたボディ座標系$\Sigma_b$の位置姿勢$T_{eb}$が分かれば、実用的なヤコビアン$J_e$がボディヤコビアン$J_b$や空間ヤコビアン$J_s$をもとに以下のように計算できるはずです。
J_e
=
Ad_{T_{eb}}
J_b
\tag{6}
J_e
=
Ad_{T_{es}}
J_s
=
Ad_{T_{eb}}
Ad_{T_{bs}}
J_s
=
Ad_{T_{eb}}
Ad_{T_{sb}}^{-1}
J_s
\tag{7}
ではアジョイント変換$Ad_{T_{eb}}$の具体的な中身を考えてみましょう。エンドエフェクタ座標系$\Sigma_e$から見たボディ座標系$\Sigma_b$の姿勢を表す回転行列を$R_{eb}$、原点位置を表すベクトルを$\boldsymbol{p_{eb}}$とします。
このときアジョイント表現はこちらの記事を参考に、以下のように記述できます。
Ad_{T_{eb}}
=
\begin{bmatrix}
R_{eb} & O\\
[\boldsymbol{p_{eb}}]R_{eb} & R_{eb}
\end{bmatrix}
\tag{8}
ただし、定義よりエンドエフェクタ座標系$\Sigma_e$と基準座標系$\Sigma_s$の姿勢が同じで、
エンドエフェクタ座標系$\Sigma_e$とボディ座標系$\Sigma_b$は原点を共有しているため、$R_{eb}$と$\boldsymbol{p_{eb}}$は以下のように表すことができます。
R_{eb} = R_{sb}
\tag{9}
\boldsymbol{p_{eb}} = \boldsymbol{0}
\tag{10}
したがって、アジョイント変換$Ad_{T_{eb}}$は
Ad_{T_{eb}}
=
\begin{bmatrix}
R_{sb} & O\\
O & R_{sb}
\end{bmatrix}
\tag{11}
となるため、(11)式を(6)式および(7)式に代入して計算してやることで簡単にヤコビアン$J_e$がもとまります。
4. おわりに
今回の記事では実用的なヤコビアン$J_e$について解説しました。スクリュー理論では空間ヤコビアン$J_s$、ボディヤコビアン$J_b$、実用的なヤコビアン$J_e$の3種類が登場しましたが、たいていの場合は$J_e$を使用することになると思います。キャチロボのロボットでもこちらのヤコビアンを使用しましたので、来週の記事ではその導出過程を示しながら、スクリュー理論をロボットに使う際のノリについて解説しようと思います。
少し短い記事になりましたが、今週も最後まで読んでいただきありがとうございました!
