見出し画像

IMUによるモーションセンシング #5 〜ジャイロセンサの基礎〜

ジャイロセンサは物体の角速度を計測するセンサである.しかし加速度センサと異なり,3次元の角速度の計算原理はかなり複雑化することから,ジャイロセンサの計測原理も複雑だ.意外と角速度の意味を正しく理解できている人は少ないかもしれない.3次元空間において角速度は角度の時間微分とは考えないほうがよい.確かにそれは回転運動の速度,つまり角度変化の勾配を反映するが,それはむしろ座標軸の運動の時間微分であって,2次元で成り立つ角度の時間微分の考え方が3次元空間ではなりたたない.3次元空間ではそもそも角度という概念を忘れたほうが良い.一つの軸まわりの回転の延長で角速度を考えると痛い目に遭うので,3次元空間でジャイロセンサを利用するためには数学的な理解を避けて通れないだろう.ここでは,少しでも直感的に3次元空間における角速度ベクトルの幾何学的な意味を理解する手助けをしていきたい.



そもそも角速度とは

2次元の平面では角速度は回転の速度や,角度の時間微分と簡単に述べることができる.しかし,3次元空間でこの流れで角速度を説明しようとすると誤解を多く生みやすい.あえてその幾何学的な意味を表現するならば,物体に固定されている座標系の軸の速度である.3次元空間では角度に対する,時刻$${t}$$による微分(以降,時間微分と呼ぶ)では角速度を定義することはできない.

3次元空間において,大きさを考えない質点の運動は,その質点の並進運動である位置ベクトル,その時刻$${t}$$によって時間微分した速度ベクトル,さらにもう1回時間微分した加速度ベクトルによって記述する.

変形しない剛体の運動は,その並進運動の3自由度に加え,回転の3自由度が加わり,位置,速度,加速度と同様に,姿勢回転行列角速度ベクトル角加速度ベクトルで表現する.並進運動における位置ベクトルに対応する姿勢回転行列はベクトルではなく3次の正方行列で表現するが,角速度と角加速度はベクトルで表現する.このように姿勢や回転はベクトルでは表現することができないことに注意をされたい.

姿勢回転行列からの角速度の導出

角速度ベクトルは姿勢回転行列の時間微分によって計算されるが,回転行列と角速度の数理的,幾何学的関係の詳細は

も参照していただきたい.

簡単におさらいすると,剛体の姿勢を表す回転行列$${\bm{R}}$$は,絶対座標系$${x,y,z}$$からみた剛体に固定された直交座標系の軸にはりついた大きさが1の単位ベクトル$${\bm{i}, \bm{j}, \bm{k}}$$を並べた行列で,


図1:姿勢回転行列の幾何学的意味

$$
\bm{R} = [\bm{i}~ \bm{j}~ \bm{k}]
$$

である.ここで,これらのベクトルは

$$
\bm{i} = \begin{bmatrix} i_x \\ i_y \\ i_z \end{bmatrix}, \bm{j} = \begin{bmatrix} j_x \\ j_y \\ j_z \end{bmatrix}, \bm{k} = \begin{bmatrix} k_x \\ k_y \\ k_z \end{bmatrix}
$$

の縦ベクトルで記述する.

この回転行列$${\bm{R}}$$が,並進運動の位置ベクトルに対応し,回転運動における姿勢を表す.くどいがこれがベクトルではなく,行列であることに注意をされたい.

すると,この時間微分は$${\dot{\bm{R}}}$$は,これらの単位ベクトルの時間微分

$$
\dot{\bm{R}} = [\dot{\bm{i}}~~ \dot{\bm{j}}~~ \dot{\bm{k}}]
$$

となる.

また,この姿勢回転行列は直交行列となる.簡単に述べると,先程述べたように直交する単位ベクトルを並べた回転行列の各成分は直交するので,

$$
\bm{RR}^T = \bm{R}^T \bm{R} = \bm{E}
$$

の性質を持つ.ここで$${{}^T}$$は行列の転置を示し,$${\bm{E}}$$は単位行列である.これは$${\bm{R}}$$を構成する各単位ベクトル$${\bm{i}, \bm{j}, \bm{k}}$$が直交し

$$
\bm{i}^T \bm{j} = 0,~\bm{j}^T \bm{k} = 0,~\bm{k}^T \bm{i} = 0
$$

が成り立つので,ベクトルの直交する概念を行列に拡張したと考えれば良い.

この性質を満たす直交行列である回転行列を微分することで得られる性質が

$$
\begin{aligned}
\dot{\bm{R}} &= [\bm{\omega} \times ] \bm{R} \\
\frac{d}{dt} \left[\bm{i} ~~ \bm{j} ~~ \bm{k} \right] &= [\bm{\omega} \times]  \left[\bm{i} ~~ \bm{j} ~~ \bm{k} \right]\\
  [\dot{\bm{i}}~~\dot{\bm{j}}~~\dot{\bm{k}}] &= [\bm{\omega} \times \bm{i}~~~ \bm{\omega} \times \bm{j} ~~~ \bm{\omega} \times \bm{k} ]
\end{aligned}
$$

で,この関係を図2に示した(文献1).

図2:角速度ベクトルωで回転時の直交基底ベクトルの速度

この性質を利用し,

身体各部位に固定されたローカル座標形で記述した角速度ベクトルは

$$
\bm{\omega} \begin{bmatrix} \hat{\omega}_x \\ \hat{\omega}_y \\ \hat{\omega}_z \end{bmatrix}
=
\begin{bmatrix} \dot{\bm{j}}^T \bm{k} \\ \dot{\bm{k}}^T \bm{i} \\ \dot{\bm{i}}^T \bm{j} \end{bmatrix}
=
-\begin{bmatrix} \dot{\bm{k}}^T  \bm{j} \\ \dot{\bm{i}}^T  \bm{k} \\ \dot{\bm{j}}^T  \bm{i} \end{bmatrix}
$$

で計算される.この式は2種類の角速度の計算方法があることを示している.各単位ベクトルの直交性が保たれ,そのノルムが$${1}$$であれば,同じ数値計算結果となるので,どちらを使用しても良い.

また,この式の幾何学的意味は,次の図3から考えると良い.

図3:x軸回りの回転時の単位ベクトルの速度

座標系が$${x}$$軸まわりに右ねじの方向に角速度$${\hat{\omega}_x}$$で回転しているとしよう(図3).すると,単位ベクトルの速度$${\dot{\bm{j}}, \dot{\bm{k}}}$$は$${yz}$$平面内を運動し,この回転によって単位ベクトル$${\dot{\bm{j}}}$$の微分は$${\bm{k}}$$方向を向き,単位ベクトル$${\dot{\bm{k}}}$$の微分は$${-\bm{j}}$$方向を向き,単位ベクトルの大きさが$${1}$$なので,角速度はそれらの内積で記述できることを示している.同様に$${\hat{\omega}_y, \hat{\omega}_z}$$についても成り立ち,これらは直交し独立に定まるので,$${xyz}$$成分を持つ一般の角速度ベクトルの計算でも成り立つ.

このように,角速度ベクトルは前章で算出する姿勢回転行列の微分,すなわち座標系に固定された単位ベクトルの微分を使用して計算される.

なお,この角速度は剛体に固定された座標軸で表された角速度で,センサで計測される角速度であることに注意されたい.

3次元空間における角速度の幾何学的意味

速度が単に位置の時刻$${t}$$に関する微分(時間微分)であったのに対して,平面では,角速度も基本的には回転角度の時間微分であることには違いがない.つまり,

で述べたように,図3を利用するなら3次元空間では$${x}$$軸まわりの角速度$${\omega_x}$$は,$${x}$$軸の回転だけを行っている際の回転角度を$${\alpha}$$とすると,幾何学的な意味は$${\alpha}$$の時間変化の勾配であるが,3次元空間で角速度を計算する場合,角度を計算しそれを時間部分するという手続きは行わない.3次元の回転の複雑さから座標軸の単位ベクトルを微分することで角速度が計算されるという性質を念頭においてほしい.

この複雑さは,単純に角速度を積分すれば角度や回転行列にはならないということを示している.

したがって,3次元空間ではいったん角度という概念を忘れて,回転運動における並進の位置ベクトルに相当する物理量は角度ではなく,あくまでも座標軸にはりついた単位ベクトルを並べて表現した座標軸の姿勢であると考えるべきである.つまり,3次元空間では角度という概念が存在しないぐらいに考えておくのが無難で,オイラー角は角度ではなくあくまでも姿勢を表すパラメータであって,実際の運動を反映した角度ではない.『オイラー角という「角」という名前がついているではないか?』,『角度を計算しているではないか?』,『単位だって角度と時間の比ではないか?』と反論される方がいると思うが,実際に3次元空間における回転角度を反映していないことが多い.たとえば複雑な運動を行っている際の前腕にとりつけたモーションセンサから前腕の運動のオイラー角を計算し,前腕の超軸まわりの回転角度を反映していないというクレームが多い.物理やロボットを研究してる研究室からも,たまにこのような質問があるので驚くが,これはオイラー角の性質で前腕の軸まわりの回転角度はオイラー角では表せないことがある.物体の姿勢はあくまでも回転行列やそれを構成する座標軸の単位ベクトルの方向で評価するのが適切だ.解剖学的な角度をオイラー角で表現するのは誤りだし,そもそも解剖学的な角度の定義は数学的に曖昧であること極まりない.

オイラー角は9個の変数で表現される回転行列を少ない変数で表現するためのあくまでもパラメータであって,これを直接使って運動を評価してはいけない.この意味が理解出きないなら,なおさらのことである.

このような問題が発生する理由は,3次元空間で角度をベクトルとしては表現できないことに由来する.3次元空間で2次元平面の断面に投影した角度を計算することは可能だし,単位クォータニオンを含めて角度的なパラメータで表現できるが,角度にそれ以上の意味はなく,それを組み合わえて3次元の姿勢をベクトルとして表現ができない.ベクトルで表現できないという意味は,たとえばオイラー角の3つのパラメータを$${\alpha, \beta, \gamma}$$で表現するとしよう.これを並べた

$$
\bm{\theta}(t) = 
\begin{bmatrix}
\alpha(t) \\ \beta(t) \\ \gamma(t)
\end{bmatrix}
$$

 を考えるが,残念ながら$${\bm{\theta}(t_1) + \bm{\theta}(t_2)}$$のような計算は意味を持たず,3次元において角度はベクトルの性質を持たない.

3次元空間における並進運動と回転運動の対比をまとめると

$$
位置ベクトル,速度ベクトル,加速度ベクトル
\\
回転行列,角速度ベクトル,角加速度ベクトル
$$

となるが,回転行列は角度を表すものではなく,それは物体の姿勢の方向を単位ベクトル(座標軸)で示したものであって,それは角度を並べたベクトルではなく,あくまでも直交行列であると覚えていただきたい.3次元空間における回転運動において並進運動の位置に相当する物理量は角度ではなく,座標系の軸にはりついた3つの単位ベクトルである.

おわりに

角度とはあくまでも2次元平面で成り立つ概念だ.

3次元空間において角度という概念はなく,それを2次元平面に投影したり,軸を一つ与えればもちろんその軸に対する角度は計算できるが,3次元空間の角度などは存在しない.たしかに単位クォータニオンは虚数の考えを3次元空間に拡張し4つのパラメータで,ある座標系から異なる座標系への移動を一つの回転軸による回転で表現している.クォータニオン積のように便利な性質もあるが,これは軸とセットの物理量で角度ではない.姿勢回転行列(直交行列)を4つの変数で表現した単なるパラメータと考えるほうが良いだろう.オイラー角と比較すると,格段に単位クォータニオン同士の演算則が成り立つが,ベクトルではない.

3次元空間において,2次元空間の角度に相当する物理量は回転行列であることに留意されたい.

3次元空間における回転運動の複雑さばかり強調したが,速度レベル,すなわち角速度ベクトル自体は各軸まわりの瞬間の回転の速度を表すベクトルである点では,非常に素直な性質である.姿勢角と角速度の関係が複雑なだけである.角速度はベクトルである.線形性が成り立つ.角加速度も同様だ.複雑なのは姿勢だけである.

微小回転や瞬間の回転ではなく,角度変化をともなう回転となると複雑さがともなうとも言える.

3次元空間における回転表現で,オイラー角や単位クォータニオンなどを使わなくてすむなら,使わないほうが無難であるとおぼえておくとよいだろう.使うと面倒な問題が増えるだけだ.



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




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

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

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

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

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


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

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

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

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