回転行列からオイラー角のパラメータ抽出を行う
...回転行列からオイラー角のパラメータ抽出を行いたいって要望って意外に高いんですね
個人的には、あまり意味が無いと思うのですが、一応まとめときます。
ってか、元のパラメータは一意に求めることが出来ないんです!!
その辺り、ちゃんとわかってます?
まず、回転行列をヨーピッチロール行列だと仮定します。
つまり
ここで、は回転行列、はx軸周りの回転行列、はy軸周りの回転行列、はz軸周りの回転行列とします。
復習のため、それぞれの回転行列を書いておきます
よって、ヨーピッチロール回転行列は次のような形になります
ここから、 なので、 とわかります。
から、 とわかります。
すなわち、 ということですね。
同様に、なので、となります。
ここまでをまとめると
ってことです。
さて、これだけで終われば話は簡単なんですが、例外があります。
ヨーピッチロール行列を良く眺めてみればわかりますが、の時には、となってしまい、値が一意に求まりません。
の時の行列がどのような形になっているか書いてみると、次のようになります。
※ の時、 となる点に注意
ここで、三角関数の加法定理を思い出してみることにします
加法定理を用いて、の時のヨーピッチロール回転行列を整理してみます
行列を眺めてみればわかるとおり、求めるべき値のとは、加算(減算)された形でとのパラメータとして現れているので、値が一意に求まりません。
そこで、適当にと置くと、なので、 となります
値が一意に求まらないとは、となる場合、とが設定したときの値で抽出できないことを意味しています。
(求めたパラメータを用いて、再度同じ形の行列を作ることは出来る)
さて、の場合とは、すなわちですよね
(要は、度回転しているってこと)
ここから、の場合には、となり、の場合には、となります。
やっとのことで、パラメータ抽出を行うことができました。
まとめておくと
以外の場合
の場合(の場合)
※ ただし、値は一意にも止まらないので、と仮定
の場合(の場合)
※ ただし、値は一意にも止まらないので、と仮定
今回は、ヨーピッチロール回転(zxy回転)を例に挙げましたが、回転表現をオイラー角で表現する場合(x,y,z軸周りのそれぞれの回転の合成)、合成の方法は、xyz,xzy,yxz,yzx,zxy,zyxの六通りあるので、それぞれ自分が利用している回転表現に合わせてパラメータ抽出の方法を変える必用があります。
ま、同じ要領でパラメータ抽出を行えばよいだけですけどね