はじめまして、りょーつといいます。高専出身の大学院2年生です。研究の専門は力学や機構学で、Qiitaでは主に制御工学や数学に関する記事を書いています。本稿はスクリュー理論の解説(布教)をする38個目の記事です。前回までの記事は以下のリンクを参照してください。
スクリュー理論① 外積の歪対称行列表現
スクリュー理論② 行列の指数関数
スクリュー理論③ 行列指数と回転行列の関係
スクリュー理論④ 回転行列の成分表示
スクリュー理論⑤ 回転行列による座標系の表現
スクリュー理論⑥ 剛体の速度・加速度の座標変換公式の導出
スクリュー理論⑦ 三次元空間における右手系の回転行列
スクリュー理論⑧ 回転行列による座標変換
スクリュー理論⑨ 回転行列によるベクトルの回転
スクリュー理論⑩ 回転行列と多様体の関係
スクリュー理論⑪ 同次変換行列の導入
スクリュー理論⑫ 同次変換行列による座標系の表現と基底変換
スクリュー理論⑬ 歪対称行列表現の回転座標変換
スクリュー理論⑭ 同次変換行列の微分とツイストの導入
スクリュー理論⑮ スクリューの導入と行列指数による同次変換行列の表現
スクリュー理論⑯ アジョイント変換
スクリュー理論⑰ 回転行列の行列対数
スクリュー理論⑱ 回転行列の積分
スクリュー理論⑲ 行列指数を用いた同次変換行列の成分表示
スクリュー理論⑳ 同次変換行列の行列対数
スクリュー理論㉑ シリアルリンクロボットアームの順運動学
スクリュー理論㉒ 円筒座標ロボットアームの順運動学
スクリュー理論㉓ 円筒座標ロボットアームのヤコビアン
スクリュー理論㉔ ボディ座標系を用いた順運動学
スクリュー理論㉕ アジョイント変換の図的イメージ
スクリュー理論㉖ 順運動学とアジョイント変換
スクリュー理論㉗ 空間ヤコビアン
スクリュー理論㉘ ボディヤコビアン
スクリュー理論㉙ 空間ヤコビアンの代数学的な導出
スクリュー理論㉚ Lie括弧積とアジョイント変換
スクリュー理論㉛ 実用的なヤコビアン
スクリュー理論㉜ キャチロボ機体を用いた空間ヤコビアンの具体例
スクリュー理論㉝ キャチロボ機体を用いた順運動学計算(ボディ座標系)
スクリュー理論㉞ キャチロボ機体を用いたボディヤコビアンの具体例
スクリュー理論㉟ キャチロボ機体を用いた実用的なヤコビアンの具体例
スクリュー理論㊱ ヤコビアンのランク
スクリュー理論㊲ 逆速度運動学とその具体例
スクリュー理論は剛体の運動を記述する方法で、ロボット工学などでよく使われています。日本の高専や大学ではDH法を使った記述を学ぶことが多いですが、国際的にはスクリュー理論を使った記述が一般的となってきているようです。スクリュー理論を扱う日本語の文献は少ないので、この記事が誰かの助けになればいいなと思います。
目次
1.はじめに
2.レンチの定義
3.ヤコビアンと仕事率
4.おわりに
1. はじめに
今回の記事では,並進力$\boldsymbol{f} \in \mathbb{R}^3$とモーメント$\boldsymbol{n} \in \mathbb{R}^3$を組み合わせて作られるレンチ$\boldsymbol{\mathcal{F}} \in \mathbb{R}^6$を紹介します.6次元ベクトルと聞くとツイスト$\boldsymbol{\nu}$を思い出す方が多いと思いますが,まさにそれと対応した概念になります.速度運動学では,各関節の角速度をまとめたベクトル$\boldsymbol{\dot{\theta}}$と,ツイスト$\boldsymbol{\nu}$の関係をヤコビアン$J$を用いて記述しました.それに対応する関係式として,各関節のトルクをまとめたベクトル$\boldsymbol{\tau}$とレンチ$\boldsymbol{\mathcal{F}}$の関係を明らかにしようと思います.そこで重要となるのが仕事率です.
なぜこれが成り立つのか,という詳細な議論は今後の記事にまかせるとして,今週はレンチ$\boldsymbol{\mathcal{F}}$の定義と,トルク$\boldsymbol{\tau}$との関係を明らかにすることへ重点を置きます.
2. レンチの定義
冒頭でも説明したとおり,レンチ$\boldsymbol{\mathcal{F}}$は並進力$\boldsymbol{f}$とモーメント$\boldsymbol{n}$を組み合わせて作られる6次元ベクトルです.もともとスクリュー理論は,機構解析において負荷による並進力と回転力を6次元ベクトルにまとめたことが発祥だったはずなので,レンチ$\boldsymbol{\mathcal{F}}$はスクリュー理論の核心とも言えます.ツイスト$\boldsymbol{\nu}$と同様に,文献によって定義のしかたは異なりますが,本記事ではレンチ$\boldsymbol{\mathcal{F}}$を以下のように定義します.
\boldsymbol{\mathcal{F}}
=
\begin{bmatrix}
\boldsymbol{n} \\
\boldsymbol{f} \\
\end{bmatrix}
\tag{1}
これは並進速度$\boldsymbol{v}$と角速度$\boldsymbol{\omega}$をまとめて以下のように定義されるツイスト$\boldsymbol{\nu}$の定義と類似しています.
\boldsymbol{\nu}
=
\begin{bmatrix}
\boldsymbol{\omega} \\
\boldsymbol{v} \\
\end{bmatrix}
\tag{2}
ベクトルの並び順に特にしていはありません(文献によってもバラバラ)が,モーメント$\boldsymbol{n}$と角速度$\boldsymbol{\omega}$の位置,並進力$\boldsymbol{f}$と並進速度$\boldsymbol{v}$の位置が一緒になるように注意してください.
レンチ$\boldsymbol{\mathcal{F}}$はツイスト$\boldsymbol{\nu}$と同様に,座標系の原点に生じる座標系依存の量になります.基準座標系を$\Sigma_s$,ボディ座標系を$\Sigma_b$とすると,基準座標系$\Sigma_s$の原点に生じるレンチは$\boldsymbol{\mathcal{F}}_s$,ボディ座標系$\Sigma_b$の原点に生じるレンチは$\boldsymbol{\mathcal{F}}_b$というように表記されます.添え字が無い場合は任意の位置姿勢を有する座標系を取った場合について議論しているものとしてください.
3. ヤコビアンと仕事率
本章では,仕事率を用いてレンチ$\boldsymbol{\mathcal{F}}$の静力学解析について紹介します.剛体の仕事率は並進力$\boldsymbol{f}$と並進速度$\boldsymbol{v}$の内積と,モーメント$\boldsymbol{n}$と角速度$\boldsymbol{\omega}$の内積を足したものになります.これは仕事率$P$が,力$\boldsymbol{f}$あるいはモーメント$\boldsymbol{n}$が単位時間に生み出した変位として定義されるためです.
P
=
\boldsymbol{f} \cdot \boldsymbol{v}
+
\boldsymbol{n} \cdot \boldsymbol{\omega}
\tag{3}
勘のいい読者の方はお気づきかもしれませんが,(3)式は実はレンチ$\boldsymbol{\mathcal{F}}$とツイスト$\boldsymbol{\zeta}$の内積と等価になります.2章でベクトルの順番を注意したのは,本章で内積を取ることになるからでした.
P
=
\boldsymbol{\mathcal{F}} \cdot \boldsymbol{\nu}
\tag{4}
一方で,仕事が発生する場合は何かしらのエネルギー源がありますよね.それがロボットアームにおいては各関節のトルクに対応します(厳密には直動関節も含むので次元は必ずしも[Nm]になるとは限らないのですが,分かりやすさのためにトルクと呼びます).
つまり,各関節がアクチュエータから受けるトルク$\boldsymbol{\tau}$によって単位時間あたりに回転した関節角度$\boldsymbol{\dot{\theta}}$との内積によっても仕事率$P$は計算することができます.
P
=
\boldsymbol{\tau} \cdot \boldsymbol{\dot{\theta}}
\tag{5}
2通りの方法で仕事率$P$を記述することができましたね.では,この世の理であるエネルギー保存則にしたがって,(4)式と(5)式の右辺をイコールで結んでみましょう.
\boldsymbol{\mathcal{F}} \cdot \boldsymbol{\nu}
=
\boldsymbol{\tau} \cdot \boldsymbol{\dot{\theta}}
\tag{6}
ここでヤコビアン$J$の定義より,$\boldsymbol{\nu}$を$\boldsymbol{\dot{\theta}}$で表現しましょう.
\boldsymbol{\nu}
=
J \boldsymbol{\dot{\theta}}
\tag{7}
なんとなく変数が整理されてきましたね.ベクトルどうしの内積が,行列の転置を用いて表現できることに注意して(7)式を(6)式に代入すると,以下の計算結果が得られます.
\boldsymbol{\mathcal{F}} \cdot (J \boldsymbol{\dot{\theta}})
=
\boldsymbol{\tau} \cdot \boldsymbol{\dot{\theta}}
\boldsymbol{\mathcal{F}}^T J \boldsymbol{\dot{\theta}}
=
\boldsymbol{\tau}^T \boldsymbol{\dot{\theta}}
\tag{8}
ここで(8)式の両辺から$\boldsymbol{\dot{\theta}}$を削除し,トルク$\boldsymbol{\tau}$について解くと以下の結果が得られます.
\boldsymbol{\mathcal{F}}^T J
=
\big(
J^T \boldsymbol{\mathcal{F}}
\big)^T
=
\boldsymbol{\tau}^T
J^T \boldsymbol{\mathcal{F}}
=
\boldsymbol{\tau}
\therefore
\boldsymbol{\tau}
=
J^T \boldsymbol{\mathcal{F}}
\tag{9}
なんと!ツイスト$\boldsymbol{\nu}$と関節角速度$\boldsymbol{\dot{\theta}}$の関係がヤコビアン$J$で結ばれるのと同じように,トルク$\boldsymbol{\tau}$とレンチ$\boldsymbol{\mathcal{F}}$もヤコビアンで結ばれることが分かりました!ツイスト$\boldsymbol{\nu}$と同じ形式で表記するなら以下のようになりますね.
\boldsymbol{\mathcal{F}}
=
{J^T}^+
\boldsymbol{\tau}
\tag{10}
転置が含まれているのはさておき,この写像は逆行列の形で表されていますね.これはツイスト$\boldsymbol{\nu}$とレンチ$\boldsymbol{\mathcal{F}}$が反対のスケーリングを受けることを意味しています.
数式で書くと難しそうですが,言っていることはシンプルな仕事の原理です.同じエネルギーで仕事をするとき,速度が大きくなると力は小さくなる.力が大きくなると速度は遅くなるといった具合のことが,(7)式と(10)式から感じることができます.ここらへんについてもそのうち書きたいですね.
4. おわりに
ひとまず今回の記事の目的である「レンチ$\boldsymbol{\mathcal{F}}$を定義する」ということと,「トルク$\boldsymbol{\tau}$とレンチ$\boldsymbol{\mathcal{F}}$の関係を導出する」というのは達成できたかなと思います.本記事だけでなく,ほとんどの文献では仕事率もしくは仮想仕事の原理を用いた定式化が行われていますが,私はこのやり方があまり好きではありません.レンチ$\boldsymbol{\mathcal{F}}$は力とモーメントなので,本来は力のつり合いから導出できるはずなのに,なぜか各関節の角速度$\boldsymbol{\dot{\theta}}$が登場するという点に違和感を感じませんか?理論としては成立していたとしても,私はその点が気になって,はじめて学んだときは理解した気になれませんでした.
次回はこの気持ち悪さを払拭するために,速度運動学を使わない縛りのもとで(9)式の定式化に挑もうと思います.レンチ$\boldsymbol{\mathcal{F}}$という,これまでとは少し違う概念が出てきたことでややこしくなったかもしれませんが,今週も最後まで読んでいただきありがとうございました!