こんにちは! SSSRCがお送りするAdvent Calender 2021 3日目の記事となります.

4年生の寺垣です.  実はすっごくお久しぶりになります笑

前回投稿したのがなんと1年生の時なんですよね~

ということで3年が経ち, 今では姿勢系内では最年長となってしまいました.

何について書くか悩んでいたのですが, 最年長ということもあり, 姿勢の表現方法についてまとめてみることにしました!!

そういうものを見つけたことがなく「あったら良いなぁ~, いつかは書いてみたいなぁ~」と思っていた内容ですので, 文章が拙く, 途中読みにくい箇所があるかもしれませんが, 少しでも読んで頂ければ幸いです.

 

さて. それでは本題に入りましょう.

まず, 姿勢とは物体がどういう回転でその向きになっているかというのを表したものです. 飛行機の例をあげると, 飛行機の姿勢は機首の向いている方向と機首に対して機体がどれだけ傾いているかを定めて初めて飛行機の姿勢が決まります.

そのため, 姿勢は方向の2自由度+回転1自由度の合計で3自由度となります.

 

姿勢についてご理解を頂いたところで, 姿勢や回転の表現方法について触れていきたいと思います.

まず, 回転行列というものがあります.

よく目にするのは[1,0,0;0,cos(x),sin(x);0,-sin(x),cos(x)]のような座標変換行列ですね.

この回転行列で表現する事のデメリットは3×3の行列なのでパラメータが9もあり, かなり無駄が多くメモリの消費が大きい点がまず挙げられるかと思います.

また個人的には物理的にどうなっているかが認識し辛い気がします.

 

次にオイラー角についてです.

オイラー角は各座標軸まわりの3つの回転の組み合わせと順番によって姿勢を表します.

2番目,3番目の回転は,一つ前の回転後の新しい座標軸における新しい軸まわりの回転となります.(文章で説明し辛い… わかりにくく申し訳ないです.)

つまり,オイラー角は軸の選択とその順番に依存する定義ということです.

オイラー角は航空や衛星のヨー, ピッチ, ロールの3パラメータと対応していて, かなりメジャーであるように感じます.

しかし, 問題点もあります. 問題点は角度が90度など特定の角度では特異点となるジンバルロックという事象が起きることです. これは回転によって2つの軸が同一平面上にそろってしまうという現象の事です. そのため, オイラー角を使ってシミュレーション等する際には特異点に気をつけなければいけません.

 

 

次にオイラーパラメータ(クォータニオン)です.

オイラーパラメータでは, 方向ベクトル[λx;λy;λz]を回転軸とした角度θの回転を

[λx sin(θ/2);λy sin(θ/2);λz sin(θ/2);cos(θ/2)], そしてノルムが1という風に表現します.  そのため, パラメータは4つですが自由度が3の表現となります.

 

この表現のメリットはある回転から次の姿勢まで回転させる処理や途中の姿勢を簡単に実装, 表現できることです. また, オイラー角と違って特異点がないという点も魅力です.

しかし, 注意点が1つだけあります.

θの回転が時計回りなのか反時計回りの角度なのかで答えが変わってきてしまうのです!

かなりよく使われる表現だけに気をつけたいものですね!

 

最後にロドリゲスパラメータの紹介をします.

これはオイラーパラメータとよく似ていて, 回転を[λx tan(θ/2);λy tan(θ/2);λz tan(θ/2)]と表現できます.

オイラーパラメータでは4つのパラメータだったのを3つにしたものとなっています.

また, tan(θ/2)となっていて時計回りか, 反時計回りかという回転の向きを気にする必要がありません.

そのため, 考えやすくオイラーパラメータより使いやすいのでは?と思ってしまいがちですが, これにも問題点があります. それはオイラー角と同じようにθ=±π/2で特異点を持つ点です.

 

Modified Rodrigues Paramete:日本語にすると修正ロドリゲスパラメータというものがあります.

こちらは[λx tan(θ/4);λy tan(θ/4);λz tan(θ/4)]で記述したものとなっています.

このようにtan(θ/4)にすることで, 特異点もなく, 回転の方向を気にする心配がなくなります. なので, 研究でオイラーパラメータではなくこのロドリゲスパラメータを使われるところも多いのだとか…

 

以上をまとめますと, 一般的な姿勢の表現方法として回転行列, オイラー角, オイラーパラメータ, ロドリゲスパラメータがあり, ロドリゲスパラメータ, 特にオイラー角では扱いやすいものの特異点が出現するという特徴があります. 一方, オイラーパラメータや修正ロドリゲスパラメータではそのような特異点を気にする必要がないので, シミュレーションで良く使われているようです.

 

実際にひろがりのシミュレーションでもオイラーパラメータを使っています.

私は修正ロドリゲスパラメータで扱ったことが無いので, 機会があれば使ってみたいなぁと思いながら書かせて頂きました.

書き終わって「長っそして内容, 重たっ」という感じになってしまったので, 次回書く際には可愛らしい内容にしようと決めました笑

お読みいただきありがとうございました.

それでは, バイバイ!!