見出し画像

動かして学ぶバイオメカニクス #30 〜ヤコビ行列#4

3次元空間で身体運動の解析を行う場合,ヤコビ行列を関節角度で記述する方法はロボットと異なり都合が良くない.そこでここでは,外積を利用し身体運動解析に適したヤコビ行列の表現方法に改める.この導出まで長い道のりだが,最終的に得られる結果はいたって単純でむしろわかりやすい.ここで述べる形式を利用すれば,直感的に関節に作用するトルクベクトルがイメージできるようになるだろう.丁寧に導出を行うが,もしすべてを理解できなくても,ぜひ外積の物理的,幾何学的意味だけは理解し,最後に述べる結論を活用していただきたい.




はじめに

前章

で「多変数ベクトル関数の微分」から導出したヤコビ行列を,本章では「外積」で記述する形式に書き換える.

このことを意外に思うかもしれないが,リンク機構が回転運動の連鎖であることを考えれば自然な結論である.

図1:ロボットの関節

一般的なロボットの関節は1軸のモータの組み合わせで構成されることが多いため,関節を1自由度の軸と対応する角度で表現するのが自然だ(図1).しかし,ヒトの関節は複雑で,たとえば肩関節や股関節は球関節とみなすと,一つの関節で3自由度もつ.これを無理やり3つのオイラー角などで記述するのは避けたい.ここでは,理由は述べないが,身体の3次元空間における回転姿勢をオイラー角で記述することは行い方が賢明だ.

そこで,直接エンドエフェクタの速度と関節速度の関係を,最初から角速度で記述し,角度を用いない身体運動解析に適したヤコビ行列を新たに導入する.これは,ロボティクスの基礎ヤコビ行列(the basic Jacobian matrix)と似ているが,ここでは,身体の構造を考慮し身体運動の解析に適した形式で記述する.

この形式でのヤコビ行列は,単に関節に作用するトルクの計算方法を簡便にするだけでなく,身体運動におけるトルクの意味を考えていく上でも重要な意味を持つ.単に数値的にトルクを計算するなら,

で述べた,ニュートン・オイラー法で解く方法が効率良いが,その物理的意味を考えるなら,ここで述べていく方法を理解することをおすすめする.

エンドエフェクタの速度と角速度

身体は,各部位の長軸方向の長さが変わる直動関節はなく,すべての関節は回転運動で構成されると仮定してもよいだろう(補足1).身体全体や多体系全体の運動を考える際には,基準とする座標系の並進運動を一つだけ加えるだけで良い.

図2:セグメントの回転運動

そこで,まず図2に示すような一つの部位(セグメント)の回転運動だけを対称とし,その部位の関節(原点)から次の関節位置またはエンドエフェクタの位置ベクトル$${\bm{r}}$$とする.いま,一つの部位の回転運動に限り,その部位が角速度$${\bm{\omega}}$$で回転している場合,その速度は

$$
\begin{aligned}
\dot{\bm{r}}&= \bm{\omega} \times \bm{r}
\\
&= -\bm{r} \times \bm{\omega}
\\
&=-[\bm{r} \times] \bm{\omega}
\end{aligned}
$$

となる.このように対称の部位のベクトルの先端を示す位置ベクトルの速度$${\dot{\bm{r}}}$$と,部位の角速度$${\bm{\omega}}$$で記述された関節速度の間には,上記のように記述される.ここで,$${[\bm{r} \times]}$$は,

$$
\begin{aligned}
\bm{r} &= 
\begin{bmatrix}r_x \\r_y \\r_z \end{bmatrix}
\\
[\bm{r} \times] &= 
\begin{bmatrix}
0 & -r_z & r_y \\
r_z & 0 & -r_x\\
-r_y & r_x & 0
\end{bmatrix}
\end{aligned}
$$

のように外積(cross product)歪対称行列(わいたいしょうぎょうれつ,または,ひずみたいしょうぎょうれつ)で記述している(補足2)

すると,手先速度と関節速度間の関係をヤコビ行列$${\bm{J}}$$を用い,

$$
\dot{\bm{x}} = \bm{J} \dot{\bm{q}}
$$

のように記述していることを思い出せば,

$$
\begin{aligned}
\dot{\bm{r}} &= -[\bm{r} \times] \bm{\omega}
\\
&\equiv \bm{J} \bm{\omega}
\end{aligned}
$$

の$${-[\bm{r} \times]}$$がヤコビ行列$${\bm{J}}$$に相当することがわかる.

ここで,ヤコビ行列$${\bm{J}}$$は

$$
\bm{J} \equiv \frac{\partial \dot{\bm{r}}}{\partial \bm{\omega}}
$$

で定義され,

$$
\begin{aligned}
\bm{J} &= \frac{\partial \dot{\bm{r}}}{\partial \bm{\omega}}
\\
&= -[\bm{r} \times]
\end{aligned}
$$

である.

つまり,ヤコビ行列はセグメント(部位)の関節からその先端(遠位の関節,またはエンドエフェクタの位置)への位置ベクトルの外積で記述できることを示している.なお,この式の偏微分はベクトルのまま微分を行っている.このような偏微分はベクトルに対しても行うことができることに注意されたい.

これはモーメントアーム(てこ)の外積を構成している.つまり

$$
\begin{aligned}
\bm{\tau} &= \bm{r} \times \bm{f}
\\
&= [\bm{r} \times] \bm{f} 
\end{aligned}
$$

の力のモーメントを計算する際のモーメントアームの効果を決める部分を行列で表現していることに気がつくだろう.

ヤコビ行列の定義の見直し

ここで,前章を思いだしてほしい.エンドエフェクタの位置を$${\bm{r} = \bm{\Psi}(\bm{q})}$$のように記述した際に,ヤコビ行列はもともと

$$
\bm{J} = \frac{\partial \bm{\Psi}(\bm{q})}{\partial \bm{q}}
$$

のように位置の関数$${\bm{r}}$$に対する角度$${\bm{q}}$$による偏微分で定義され,

$$
\dot{\bm{r}} = \bm{J} \dot{\bm{q}}
$$

のように導出した.ところが,先程のヤコビ行列の定義は,それとは異なり速度$${\dot{\bm{r}}}$$に対する角速度$${\bm{\omega}}$$に関する偏微分

$$
\begin{aligned}
\bm{J} &= \frac{\partial \dot{\bm{r}}}{\partial \bm{\omega}}
\end{aligned}
$$

で導出している.ここで証明は行わないが(文献1を参照されたい),

$$
\begin{aligned}
\bm{J} =  \frac{\partial \bm{\Psi}(\bm{q})}{\partial \bm{q}} = \frac{\partial \dot{\bm{r}}}{\partial \bm{\omega}}
\end{aligned}
$$

となることに留意されたい.つまり,ヤコビ行列は,エンドエフェクタの位置$${\bm{r}}$$と関節角度$${\bm{q}}$$との関係を関数$${\bm{\Psi}}$$で運動学で記述し,その角度に関する微分$${\frac{\partial \bm{\Psi}}{\partial \bm{q}}}$$から算出してもよいし,エンドエフェクタの速度$${\dot{\bm{r}}}$$と剛体の角速度$${\bm{\omega}}$$間の微分運動学で記述し,その角速度に関する微分$${\frac{\partial \dot{\bm{r}}}{\partial \bm{\omega}}}$$からも導出できることを示している.どちらでもよい.

証明ではないが,どちらでも計算しても,ヤコビ行列が一致することを,前章でも取り上げた平面2リンク機構の例で確認する.

図3:平面2リンクモデル

前章までに示してきたように,運動学的に角度に関する
微分$${\frac{\partial \bm{\Psi}}{\partial \bm{q}}}$$から導出すると

$$
\begin{aligned}
\bm{x} &= \bm{\Psi}(\bm{q})=
\begin{bmatrix}
l_1 \cos q_1 + l_2 \cos(q_1 + q_2) \\
l_1 \sin q_1 + l_2 \sin(q_1 + q_2)
\end{bmatrix}
\\\\
\bm{J}_{\Psi}(\bm{q}) &= \frac{\partial \bm{\Psi}}{\partial \bm{q}}=
\begin{bmatrix}
-l_1 \sin q_1 - l_2 \sin(q_1 + q_2)  & -l_2 \sin(q_1 + q_2)\\
l_1 \cos q_1 + l_2 \cos(q_1 + q_2) &  l_2 \cos(q_1 + q_2)
\end{bmatrix}
\\
\dot{\bm{x}} &= \bm{J}_{\Psi}(\bm{q}) \dot{\bm{q}}
\end{aligned}
$$

となるが,微分運動学による角速度に関する微分$${\frac{\partial \dot{\bm{r}}}{\partial \bm{\omega}}}$$から導出しても,

$$
\begin{aligned}
\dot{\bm{x}} &=
\begin{bmatrix}
-l_1 \dot{q}_1 \sin q_1 - l_2 \dot{q}_1 \sin(q_1 + q_2) -l_2 \dot{q}_2 \sin(q_1 + q_2)\\
l_1 \dot{q}_1 \cos q_1 + l_2 \dot{q}_1 \cos(q_1 + q_2) + l_2 \dot{q}_2 \cos(q_1 + q_2)
\end{bmatrix}
\\\\
\bm{J}_{v}(\bm{q}) &= \frac{\partial \dot{\bm{x}}}{\partial \dot{\bm{q}}}=
\begin{bmatrix}
-l_1 \sin q_1 - l_2 \sin(q_1 + q_2)  & -l_2 \sin(q_1 + q_2)\\
l_1 \cos q_1 + l_2 \cos(q_1 + q_2) &  l_2 \cos(q_1 + q_2)
\end{bmatrix}
\\
\dot{\bm{x}} &= \bm{J}_v(\bm{q}) \dot{\bm{q}}
\end{aligned}
$$

を得て,

$$
\begin{aligned}
\frac{\partial \bm{\Psi}}{\partial \bm{q}} &= \frac{\partial \dot{\bm{x}}}{\partial \dot{\bm{q}}}
\\
\bm{J}_{\Psi}(\bm{q}) &= \bm{J}_{v}(\bm{q})
\end{aligned}
$$

のように,2リンク機構で,どちらのヤコビ行列の導出方法でも一致することが確認できた.ヤコビ行列は,手先と関節間の,位置(運動学)の関係でも,速度(微分運動学)の関係からも導出できる.これは都合が良い.

多体系のヤコビ行列

ひとつの回転運動のヤコビ行列が,その運動を構成するモーメントアームの外積で構成されることをしめした.もちろん,これが多体系(多リンク,セグメントモデル)で記述しても,全く同様に多体系のヤコビ行列を計算できる.

図4:3次元空間における3リンク機構

ここで,3次元空間で3つの「球関節」で構成される9自由度の3リンク機構を考える.各部位(リンク)$${ i = 1,2,3}$$の近位側の関節から遠位側の関節を指す位置ベクトルを$${\bm{l}_1, \bm{l}_2, \bm{l}_3}$$とすると,エンドエフェクタの位置ベクトル$${\bm{x}}$$は

$$
\bm{x} = \bm{l}_{1} + \bm{l}_{2} + \bm{l}_{3}
$$

となる.

絶対座標系で表される各部位の角速度ベクトルを$${\bm{\omega}_1, \bm{\omega}_2, \bm{\omega}_3}$$とすると,エンドエフェクタの速度ベクトルは

$$
\begin{aligned}
\dot{\bm{x}} &= \bm{\omega}_1 \times \bm{l}_{1} + \bm{\omega}_2 \times \bm{l}_{2} + \bm{\omega}_3 \times \bm{l}_{3}
\\
&= -\bm{l}_{1} \times \bm{\omega}_1 - \bm{l}_{2} \times \bm{\omega}_2 -\bm{l}_{3} \times \bm{\omega}_3
\\
&= -[\bm{l}_{1} \times] \bm{\omega}_1 -[\bm{l}_{2} \times] \bm{\omega}_2 -[\bm{l}_{3} \times] \bm{\omega}_3
\\
&= [\bm{l}_{1} \times]^T \bm{\omega}_1 +[\bm{l}_{2} \times]^T \bm{\omega}_2 +[\bm{l}_{3} \times]^T \bm{\omega}_3
\end{aligned}
$$

と書けるので,この速度ベクトルに対する角速度ベクトルの変化を示すヤコビ行列

$$
\begin{aligned}
\bm{J}_{\omega} &= \frac{\partial \dot{\bm{x}}}{\partial \bm{\omega}}
\\
&=\begin{bmatrix}
-[\bm{l}_{1} \times] & - [\bm{l}_{2} \times]& -[\bm{l}_{3} \times]
\end{bmatrix}
\\
&=\begin{bmatrix}
[\bm{l}_{1} \times]^T & [\bm{l}_{2} \times]^T & [\bm{l}_{3} \times]^T
\end{bmatrix}
\end{aligned}
$$

を得る.

なお,この計算では歪対称行列$${\bm{A}}$$の転置行列$${\bm{A}^T}$$は

$$
\begin{aligned}
\bm{A} &= \begin{bmatrix}
0 & -a_z & a_y\\
a_z & 0 & -a_x\\
-a_y & a_x & 0
\end{bmatrix}
\\
\begin{bmatrix}
0 & -a_z & a_y\\
a_z & 0 & -a_x\\
-a_y & a_x & 0
\end{bmatrix}^T &=
\begin{bmatrix}
0 & a_z & -a_y\\
-a_z & 0 & a_x\\
a_y & -a_x & 0
\end{bmatrix}
=-
\begin{bmatrix}
0 & -a_z & a_y\\
a_z & 0 & -a_x\\
-a_y & a_x & 0
\end{bmatrix}
\\
\bm{A}^T &= - \bm{A}
\end{aligned}
$$

のように$${-\bm{A}}$$となる性質を利用している.

運動学的な計算を行う際には,この各部位$${i}$$の角速度$${\bm{\omega}_i}$$によって微分することで得られるこの形式のヤコビ行列で記述するのがよい.また,この角速度は各部位の絶対座標系に対する角速度であることに注意されたい.

この式は,図4の青色で示した,各部位の関節(原点)から遠位の関節へ向けた位置ベクトルの外積で構成されている.

力学計算に適した多体系のヤコビ行列

図5:部位間に相対的に作用するトルクと角速度

通常,力学計算において関節に作用するトルクは,「各部位間に相対的に作用する関節のトルク」として定義される(図5).静止座標系に対して作用するトルクではない.また,ヤコビ行列を計算する際には,角速度とトルクの定義は同じ座標系の定義である必要がある.したがって多体系の力学計算に適したヤコビ行列として,各部位間の相対角速度で微分運動学関係を記述することで,ヤコビ行列を算出する.

そこで,ここでは各部位間の相対角速度$${\bm{\Omega}_i}$$を,先程定義した絶対座標系で定義した角速度$${\bm{\omega}_i}$$を利用し,

$$
\bm{\Omega}_1 \equiv \bm{\omega}_1, \bm{\Omega}_2 \equiv \bm{\omega}_2 - \bm{\omega}_1, \bm{\Omega}_3 \equiv \bm{\omega}_3 - \bm{\omega}_2
$$

のように定義し,以下のようにエンドエフェクタの速度$${\dot{\bm{x}}}$$を,相対角速度$${\bm{\Omega}_i}$$で記述すると,

$$
\begin{aligned}
\dot{\bm{x}} &= \bm{\omega}_1 \times \bm{l}_{1} + \bm{\omega}_2 \times  \bm{l}_{2} + \bm{\omega}_3 \times \bm{l}_{3}
\\
&= \bm{\Omega}_1 \times \bm{l}_{1} + (\bm{\Omega}_1 + \bm{\Omega}_2) \times \bm{l}_{2} + (\bm{\Omega}_1 +  \bm{\Omega}_2 + \bm{\Omega}_3) \times \bm{l}_{3}
\\
&= \bm{\Omega}_1 \times (\bm{l}_{1} + \bm{l}_{2} +\bm{l}_{3}) + \bm{\Omega}_2 \times (\bm{l}_{2} + \bm{l}_{3}) + \bm{\Omega}_3 \times \bm{l}_{3}
\\
&= [\bm{\Omega}_1 \times] (\bm{l}_{1} + \bm{l}_{2} +\bm{l}_{3}) +[\bm{\Omega}_2 \times] (\bm{l}_{2} + \bm{l}_{3}) + [\bm{\Omega}_3 \times] \bm{l}_{3}
\\
&= -[(\bm{l}_{1} + \bm{l}_{2} +\bm{l}_{3}) \times] \bm{\Omega}_1 - [(\bm{l}_{2} + \bm{l}_{3}) \times] \bm{\Omega}_2 - [\bm{l}_{3} \times] \bm{\Omega}_3
\\
&= -[\bm{L}_{1}\times]  \bm{\Omega}_1 - [\bm{L}_{2} \times]  \bm{\Omega}_2 - [\bm{L}_{3} \times] \bm{\Omega}_3
\\
&= [\bm{L}_{1}\times]^T  \bm{\Omega}_1 +[\bm{L}_{2} \times]^T  \bm{\Omega}_2 + [\bm{L}_{3} \times]^T \bm{\Omega}_3
\end{aligned}
$$

となる.ここで,図6に示したように,$${\text{P}_1,\text{P}_2,\text{P}_3}$$からみた$${\bm{x}}$$の位置ベクトルを$${\bm{L}_i}$$と定義し,

図6:P1からみた各関節とエンドエフェクタの位置ベクトル

$$
\begin{aligned}
\bm{L}_{1} &\equiv \bm{l}_{1} + \bm{l}_{2} +\bm{l}_{3}
\\
\bm{L}_{2} &\equiv \bm{l}_{2} +\bm{l}_{3}
\\
\bm{L}_{3} &\equiv \bm{l}_{3}
\end{aligned}
$$

とした.

このように絶対座標形で記述した角速度と相対角速度によって偏微分する場合の違いは,$${\bm{L}_i}$$や$${\bm{l}_{i}}$$に現れる.図4,6で違いを確認されたい.

ここで,3つの相対角速度ベクトルをまとめたベクトルを

$$
\bar{\bm{\Omega}}=\begin{bmatrix}
\bm{\Omega}_1\\ \bm{\Omega}_2 \\ \bm{\Omega}_3
\end{bmatrix}
=\begin{bmatrix}
\bm{\omega}_1\\ \bm{\omega}_2 - \bm{\omega}_1 \\ \bm{\omega}_3- \bm{\omega}_2
\end{bmatrix}
$$

と定義すれば,ヤコビ行列の定義から

$$
\begin{aligned}
\bm{J}_{\bm{\Omega}} &= \frac{\partial \dot{\bm{x}}}{\partial \bar{\bm{\Omega}}}
\\
&=\begin{bmatrix} \frac{\partial \dot{\bm{x}}}{\partial \bm{\Omega}_1} &
\frac{\partial \dot{\bm{x}}}{\partial \bm{\Omega}_2} &
\frac{\partial \dot{\bm{x}}}{\partial \bm{\Omega}_3}
\end{bmatrix}
\\
&= 
\begin{bmatrix}
-[\bm{L}_{1} \times]&- [\bm{L}_{2} \times]&- [\bm{L}_{3} \times]
\end{bmatrix}
\\
&= 
\begin{bmatrix}
[\bm{L}_{1} \times]^T & [\bm{L}_{2} \times]^T & [\bm{L}_{3} \times]^T
\end{bmatrix}
\end{aligned}
$$

となる.これは前出の$${\bm{J}_{\omega}}$$と似ているが,再度,$${\bm{L}_i}$$と,前出の$${\bm{l}_{i}}$$との違いを確認していただきたい.

ここで,根本のリンクから見た各関節への位置ベクトルと,その外積は

$$
\begin{aligned}
\bm{L}_{i} &\equiv \begin{bmatrix} L_{xi} \\ L_{yi} \\ L_{zi} \end{bmatrix}
\\
[\bm{L}_{i} \times] &=
\begin{bmatrix} 0 & - L_{zi} & L_{yi} \\L_{zi} & 0 & -L_{xi} \\ -L_{yi} & L_{xi} & 0\end{bmatrix}
\end{aligned}
$$

で記述される.

この結果を成分まで示すと,

$$
\begin{aligned}
\dot{\bm{x}} &= \bm{J}_{\bm{\Omega}} \bar{\bm{\Omega}}
\\
&=
\begin{bmatrix}
[\bm{L}_{1} \times]^T & [\bm{L}_{2} \times]^T & [\bm{L}_{3} \times]^T
\end{bmatrix}
\bar{\bm{\Omega}}
\\
\begin{bmatrix} \dot{x}\\\dot{y}\\\dot{z}\end{bmatrix}
&=
\begin{bmatrix}
0 & L_{z1} & -L_{y1} && 0 & L_{z2} & -L_{y2} && 0 & L_{z3} & -L_{y3}
\\-L_{z1} & 0 & L_{x1} && -L_{z2} & 0 & L_{x2} && -L_{z3} & 0 & L_{x3}
\\ L_{y1} & -L_{x1} & 0 && L_{y2} & -L_{x2} & 0 && L_{y3} & -L_{x3} & 0 \end{bmatrix}
\begin{bmatrix} \omega_{x1} \\ \omega_{y1} \\ \omega_{z1} \\
\omega_{x2} - \omega_{x1}\\ \omega_{y2} - \omega_{y1}\\ \omega_{z2} - \omega_{z1}\\
\omega_{x3} - \omega_{x2}\\ \omega_{y3} -\omega_{y2} \\ \omega_{z3} - \omega_{z2} \\
\end{bmatrix}
\end{aligned}
$$

となる.

ヤコビ行列はもともと解析的に導入し角度で記述されたが,3次元空間における3リンクモデルのヤコビ行列をモーメントアームベクトルの外積で記述した.

この形式は特にモーションキャプチャで記述する上で都合が良い.なぜなら,$${\bm{L}_{i}}$$は単に各関節からエンドエフェクタを結ぶベクトルであることから,「角度を定義することなく」ヤコビ行列を計算できる.

次の節では,具体的に身体のような多体系(多リンク系)の静力学問題を,導出したヤコビ行列を用いて記述する.

ここまで,力学計算に適したヤコビ行列の導出をはしょらず丁寧に説明を行った.正しく利用するためには,これまで示した導出は重要だが,それがわからなくても,最終的に得られた$${\bm{J}_{\bm{\Omega}}}$$の定義を利用し,以下の議論に結びつけていただければと思う.

多体系の静力学

前章と同様に仮想仕事の原理にしたがい,手先力$${\bm{F}}$$と関節に作用するトルク$${\bm{\tau}_i}$$の静力学関係を導出する.

図7:手先力と関節に作用するトルク間の静力学関係

ここで,

$$
\bm{T} = \begin{bmatrix} \bm{\tau}_1 \\ \bm{\tau}_2 \\ \bm{\tau}_3 \end{bmatrix}
$$

と定義すると,仮想仕事の原理から

$$
\begin{aligned}
\bm{T} &= -\bm{J}_{\bm{\Omega}}^T \bm{F}
\\
\begin{bmatrix}
\bm{\tau}_1 \\\bm{\tau}_2 \\\bm{\tau}_3
\end{bmatrix}
&=-
\begin{bmatrix}
[\bm{L}_{1} \times]^T & [\bm{L}_{2} \times]^T & [\bm{L}_{3} \times]^T
\end{bmatrix}^T \bm{F}
\\&=
-
\begin{bmatrix}
[\bm{L}_{1} \times] \\ [\bm{L}_{2} \times] \\ [\bm{L}_{3} \times]
\end{bmatrix} \bm{F}
\\
&=
\begin{bmatrix}
[\bm{L}_{1} \times]^T \\ [\bm{L}_{2} \times]^T \\ [\bm{L}_{3} \times]^T
\end{bmatrix} \bm{F}
\\
\begin{bmatrix}
\tau_{x1}\\\tau_{y1} \\\tau_{z1}\\\tau_{x2}\\\tau_{y2} \\\tau_{z2}\\\tau_{x3}\\\tau_{y3}\\\tau_{z3}
\end{bmatrix}
&=
\begin{bmatrix}
0 &  L_{z1} & -L_{y1} \\-L_{z1} & 0 & L_{x1} \\ L_{y1} & -L_{x1} & 0\\
0 & L_{z2} & -L_{y2} \\-L_{z2} & 0 & L_{x2} \\ L_{y2} & -L_{x2} & 0\\
0 & L_{z3} & -L_{y3} \\-L_{z3} & 0 & L_{x3} \\ L_{y3} & -L_{x3} & 0
\end{bmatrix}
\begin{bmatrix}
F_x \\F_y \\F_z
\end{bmatrix}
\end{aligned}
$$

と書くことができる.

なお,ここで$${\bm{T}, \bm{\tau}_i}$$は平衡状態のトルクであることに注意されたい.

これは第14章

で示した結果と比較していただきたい.ここで述べている,$${\bm{L}_i}$$は第14章の$${\bm{r}_i}$$の記号に相当する.そこでは,各部位の全運動方程式を加算することで導出したが,ここでは仮想仕事の原理を用いて導出している.

以上より,静力学状態では,各関節に作用するトルクは末端に作用する力と,各関節から末端への位置ベクトルとの外積だけで計算ができる.

この結果を利用すれば,たとえば,エンドエフェクタに力$${\bm{F}}$$が作用するとき,それと釣り合う各関節に作用するトルク$${\bm{\tau}_i}$$は

$$
\begin{aligned}
\bm{\tau}_1 = [\bm{L}_{1} \times]^T \bm{F} = -\bm{L}_1 \times \bm{F}
\\
\bm{\tau}_2 = [\bm{L}_{2} \times]^T \bm{F} = -\bm{L}_2 \times \bm{F}
\\
\bm{\tau}_3 = [\bm{L}_{3} \times]^T \bm{F} = -\bm{L}_3 \times \bm{F}
\end{aligned}
$$

より計算される.

これをモーションキャプチャで計測することも考え,各関節とエンドエフェクタの位置ベクトルを$${\bm{p}_1, \bm{p}_2, \bm{p}_3, \bm{x}}$$とすると

$$
\begin{aligned}
\bm{L}_1  = \bm{x} - \bm{p}_1
\\
\bm{L}_2  = \bm{x} - \bm{p}_2
\\
\bm{L}_3  = \bm{x} - \bm{p}_3
\end{aligned}
$$

と書き換えることができ,各トルクも

$$
\begin{aligned}
\bm{\tau}_1 &= -(\bm{x} - \bm{p}_1) \times \bm{F}
\\
\bm{\tau}_2 &= -(\bm{x} - \bm{p}_2) \times \bm{F}
\\
\bm{\tau}_3 &= -(\bm{x} - \bm{p}_3) \times \bm{F}
\end{aligned}
$$

のように書き換えることができる.このように,静力学によって関節に作用するトルクは簡単な形で記述されることを示した.

この式は,$${\text{P}_1}$$からどのような関節を経由しても,すなわち冗長性があっても,「関節$${i}$$に作用するトルクは,その関節$${\bm{p}_i}$$からエンドエフェクタ$${\bm{x}}$$を指し示す位置ベクトルと,エンドエフェクタ$${\bm{x}}$$に作用する力ベクトルとの外積だけで計算され」,その間の関節がどのような位置にあっても,それだけで計算されることを示している.関節とエンドエフェクタ間に一つのモーメントアームの棒が存在すると考えれば良い.

次の例より,外積の幾何学的意味を理解することで,各関節に作用するトルクが直感的に理解できることを示す.

理論的な展開が長かったが,最終的に導出される結果は上記のように非常に簡潔となる.

例題

例題1:床反力と下肢の関節に作用するトルク

図8:スクワット時の各関節に作用するトルク

第14章でも示した例だが,スクワットの姿勢で静止している状態を考えてみてほしい.このとき図8のように膝関節と股関節は屈曲している.股関節,膝関節が図6の点$${\text{P}_1, \text{P}_2}$$に相当する.また部位3の足先のCOP(圧力中心)の位置に床反力$${\bm{F}}$$が作用している.

このとき,膝関節と股関節に作用するトルク$${\bm{\tau}_1, \bm{\tau}_2}$$は,これまでの結果を利用し,

$$
\begin{aligned}
\bm{\tau}_1 &= -\bm{L}_1 \times \bm{F}
\\
\bm{\tau}_2 &= -\bm{L}_2 \times \bm{F}
\end{aligned}
$$

から計算される.なお,ここで$${\bm{L}_1, \bm{L}_2}$$は股関節と膝関節からCOPまでの位置ベクトルである.

たとえばスクワットや垂直跳びで,股関節が重心より大きく後方にあれば,股関節のトルクが大きく発揮され,膝関節が重心よりも大きく前方に位置していれば,膝関節のトルクが大きくなるであろう.また,各トルクは図8の紙面の奥から手前方向に向かう軸となる.

外積の意味と計算については

などで復習していただきたい.

このことを静力学的近似の式を使って説明する.たとえば股関節に作用するトルク$${\bm{\tau}_1}$$は$${−\bm{L}_1 \times \bm{F}}$$で記述されるが,外積の意味を考えると,これは薄い青色の四角形の面積で定まる.これが主としてCOPと股関節間の水平距離に影響を受けることを考えれば.膝関節のトルク$${\bm{\tau}_2}$$は,図8の姿勢では膝とCOPの対角線で構成される四角形の面積(薄赤色)は小さく,$${\bm{\tau}_2}$$が小さくなることがわかるだろう.

「計算ツールの視点」からのこのようなトルクの式の意味と,外積を理解していれば,「床反力ベクトルと姿勢」で,どこの関節に負担がかかっているかが容易に想像がつくはずである.冒頭に述べたが,外力が支配的な状態では股関節のトルクを定めるには,膝の位置は関係ない.股関節とCOPの位置(姿勢)と床反力ベクトルで一意に定まる(計算できる).

正確な計測にはモーションキャプチャやフォースプレートなどを必要とするが,肘に大きな負担がかかっているかなどは,近似的に予想するだけなら,この原理を用いればかなり直感的にわかるだろう.これは理学療法やトレーナーの方々にとっても有用な知見だ.外積を理解することで,図8のように外力が作用する近辺での関節に作用するトルクベクトルの大きさと方向を,運動を観察しただけで判断できるようになり,良い姿勢,悪い運動の仕方,効果的な力発揮方法などの力学的な理解につながるはずだ.

例題2:蝶番関節のヤコビ行列

膝関節や肘関節を蝶番関節とみなすと,それは1軸の関節運動でロボットの関節構造に近い.この関節の軸方向の単位ベクトルを$${\bm{e}_j}$$,その軸まわりの角速度を$${\dot{q}_j}$$とし,この1軸回転運動による運動による遠位端の速度$${\dot{\bm{r}}}$$は

$$
\begin{aligned}
\dot{\bm{r}} &= \dot{q}_j \bm{e}_j \times \bm{r}
\\
&= \dot{q}_j (\bm{e}_j \times \bm{r})
\end{aligned}
$$

と書けるので,手先速度ベクトル$${\dot{\bm{r}}}$$の関節速度$${\dot{q}_j}$$に関するヤコビ行列

$$
\bm{J}_j =\frac{\partial \dot{\bm{r}}}{\partial \dot{q}_j} = \bm{e}_j \times \bm{r}
$$

を用いてその関係を記述すると

$$
\begin{aligned}
\dot{\bm{r}} &= (\bm{e}_j \times \bm{r}) \dot{q}_j
\\
&= \bm{J}_i \dot{q}_j
\end{aligned}
$$

と書くことがで,蝶番関節によって1軸に拘束された関節速度に対するヤコビ行列も記述できる.

図9に示すような,蝶番関節を含む多関節構造のヤコビ行列も同様に導くことができるが,それは練習問題としてご自身で考えていただきたい.

図9:球関節と蝶番関節から構成される2リンク機構

ヒント:3軸球関節と1軸蝶番関節から構成される関節速度ベクトルを

$$
\begin{aligned}
\bm{\Omega} = \begin{bmatrix}
\bm{\omega} \\ \dot{q}_j
\end{bmatrix} = \begin{bmatrix}
\omega_x \\ \omega_y \\ \omega_z \\ \dot{q}_j
\end{bmatrix}
\end{aligned}
$$

とすればよい.この2関節を有する手先速度ベクトル$${\dot{\bm{x}}}$$のヤコビ行列を導出を試みていただきたい.

おわりに

少々長い道のりであったが,ヤコビ行列を導入し,手先や足先に作用する力(床反力も含む)から関節に作用するトルクに変換する方法を示した.もはや位置の関数を微分し,解析的にヤコビ行列を導入する必要はない.ヤコビ行列は単に関節からエンドエフェクタを指す位置ベクトルで記述することができ,この静力学計算はそのベクトルの外積で記述できることから,力学計算を簡潔に計算することを可能とし,姿勢から関節に作用するトルクベクトルが容易に想像できる.

ただし,ここまで述べてきたことは,あくまでも静力学の釣り合いの話であったが,次章

で,これを動力学計算に拡張する.

そこで次章以降で述べていくことを前もってイメージするために,動力学計算における,関節に作用するトルクの物理的意味を図10に示した.

図10:多関節系における関節に作用するトルク

次章以降で導きたい結論は,ダランベールの原理(d'Alembert's principle)の助けを借りて,『多体系(多関節系)の運動における,ある関節に作用するトルクは,すべての外力と,すべての慣性力(たとえば,$${m \ddot{\bm{x}}}$$や$${\bm{I} \dot{\bm{\omega}} + \bm{\omega} \times \bm{I} \bm{\omega}}$$)も一種の「力」や「トルク」とみなし,対象とする関節まわりの,全ての力に対する力のモーメントの和』と定義される(図10参照).式は途中の関節の位置と独立に定まることを示している.

図10は3次元空間における2リンク機構を示しただけであるが,関節が増えても,基本的には$${\bm{L}_i \times \mathcal{F}_i}$$と$${\mathcal{M}_i}$$を加算するだけである.また,エンドエフェクタ以外に外力が作用しても,同様にその力のモーメントを加算すれば良い.

つまり『関節に作用するトルクは,その関節を原点(中心)にした慣性力を含む全ての力のモーメントとトルクの和』にすぎない.

なお,この結論は,すでに第14章

で述べた「合成の運動方程式」の結果と一致する.前章では各部位の加算によって導出したが,次章ではいくつかの原理を利用することで,数理的に導出を試み,それらが一致することを示す.ヤコビ行列は,運動方程式を意味のある形で綺麗にまとめてくれる道具となる.

また,詳細は次章以降で述べるが,$${\mathcal{M}_i}$$はトルク(補足3)で,座標系の原点とは無関係に定まる物理量であることに注意されたい.

同様にすでに第14章で示したところであるが,次章では動力学計算の中におけるこの静力学計算の位置づけを整理し,ヒトはむしろこの静力学計算が中心となるように,すなわち,それ以外の動的な項(特に$${\mathcal{M}}$$)を小さくするようにヒトは身体を制御していることを示し,それが身体運動における本質であり,ヒトらしい運動を形成する本質の一つであることを示す.

これらの導出などは,文献2,3も参照されたい.

補足

補足1:セグメントの長さは一定?可変?

身体の構造はロボット異なりきれいな関節軸が存在するわけではないので,前腕などの各部位の長さは一定とはならない.実際の関節は細かいことを述べると並進運動も存在する.セグメント長(リンク長,部位の長さ)を一定とするか,可変とするかでモデル化は異なるが,筆者は長さを変えるほうが都合が良いのでモーションキャプチャで計測した関節位置をそのまま採用し,結果,各部位の長さは可変のモデルを採用する.この場合,身体にはコリオリ力が発生するが,このちからは無視できるほどの小ささであるので,通常の力学計算と違いがない.

長さの変化は微分すれば,つまり速度や加速度レベルでは気にならないが,位置や角度レベルでは誤差が蓄積してしまい,解析の立場では都合が悪いことが多い.

補足2:外積

外積の詳細は

を参照していただきたいが,ここでも簡単に述べる.

図11:外積の幾何学的意味

外積は図11において

  • ベクトル$${\bm{a}, \bm{b}}$$の両方に直交し,始点を一致させて,$${\bm{a}}$$を$${\bm{b}}$$に近づけるように,右ネジを回す際の進行方向を向く.

  • その大きさは, ベクトル$${\bm{a}, \bm{b}}$$ の始点を一致させて作る平行四辺形の面積$${|\bm{a}||\bm{b} \sin \psi}$$に等しい.

補足3:トルクと力のモーメント

トルクと力のモーメントは同義の意味として扱われることがあり,

$$
\bm{n} = \bm{r} \times \bm{f}
$$

の左辺をトルクとよび,右辺のように明示的に力ベクトルのモーメントとして記述する場合を力のモーメントとよぶ程度の区別を与えることもある.

ここでは,力のモーメントは想定する回転の中心(原点)によって異なる物理量であるが,トルクはもはや原点に依存せずに定まる回転の力として区別することにする.偶力もトルクである.モータが発揮する回転力もトルクだ.関節に作用する回転力もトルクとよぶ.

たとえば前腕をモデル化する際,手関節と肘関節の2つの関節にトルクが作用すると考えるが,たしかにそれぞれのトルクが作用する関節は存在するが,力学計算を行っている時点で,それは原点(回転の中心,ここでは関節に相当)に依存せず,トルクはあくまでも前腕に作用するのであって,関節や回転の中心の位置と独立に定まる物理量として,トルクを考え,力のモーメントと区別している.

参考文献

1)清水,今西著,日本機械学会編,マルチボディダイナミクス(1)ー基礎理論ー,コロナ社,2006

2)西川ら,ヤコビ行列を用いた静力学による着地動作解析,シンポジウム: スポーツ・アンド・ヒューマン・ダイナミクス講演論文集,108, 2013

3)太田ら,Jourdainの原理に基づく逆動力学解析に適した全身の運動方程式の導出,シンポジウム:スポーツ工学・ヒューマン・ダイナミクス,C1,2015



スポーツセンシング 公式note
スポーツセンシング 運動習慣獲得支援サービス「FitClip」
スポーツセンシング アスリートサポート事業



【著作権・転載・免責について】

権利の帰属
本ホームページで提示しているソフトウェアならびにプログラムリストは,スポーツセンシング社の著作物であり,スポーツセンシング社に知的所有権がありますが,自由にご利用いただいて構いません.

本ページに掲載されている記事,ソフトウェア,プログラムなどに関する著作権および工業所有権については,株式会社スポーツセンシングに帰属するものです.非営利目的で行う研究用途に限り,無償での使用を許可します.

転載
本ページの内容の転載については非営利目的に限り,本ページの引用であることを明記したうえで,自由に行えるものとします.

免責
本ページで掲載されている内容は,特定の条件下についての内容である場合があります. ソフトウェアやプログラム等,本ページの内容を参照して研究などを行う場合には,その点を十分に踏まえた上で,自己責任でご利用ください.また,本ページの掲載内容によって生じた一切の損害については,株式会社スポーツセンシングおよび著者はその責を負わないものとします.


【解析・受託開発について】

スポーツセンシングでは,豊富な知見を持つ,研究者や各種エンジニアが研究・開発のお手伝いをしております.研究・開発でお困りの方は,ぜひスポーツセンシングにご相談ください.
【例】
 ・データ解析の代行
 ・受託開発
  (ハードウェア、組込みソフトウェア、PC/モバイルアプリ)
 ・測定システム構築に関するコンサルティング など
その他,幅広い分野をカバーしておりますので,まずはお気軽にお問い合わせください.

【データの計測について】

スポーツセンシング社のスタジオで,フォースプレートやモーションキャプチャを利用した計測も行えます.出力されるデータと,ここで示したプログラム(入力データの取り込み関数を少々改変する必要があるが)で,同様な解析を行えますので,まずはお気軽にお問い合わせください.