3次元回転の誤差の定量化・3次元回転の特定の軸に沿った最良近似
2次元回転の誤差の定量化
2次元回転から考える。
2次元ユークリッド空間
であることはよく知られている。
たとえば、回転を測るセンサーがあり、そのセンサーの性能を評価したい、というような場面である。
よく行われる定量化は、次のようなものだろう。
ただし、ここで
これはつまり、
が の距離であることの証明
ここで与えた
一般的に、「どのくらい異なるか」ということを扱う場合には、距離空間という道具立てをする。
証明
- 正定値性
は定義より明らかである(「長さ」なので)。 - 非退化性
も明らかである(劣弧の長さが0であることと、円上の2点が一致することは同値)。 - 対称性
も明らかである(「長さ」なので)。 - 三角不等式
を示す。
を示せば良いが、ここで、
であることに注意して、
を証明すれば良い。
に注意して、
i.)
ii.)
ii-a.)
となり成立。
ii-b.)
となり成立。
他の場合も、上記3つの場合に帰着できる。Q.E.D.
距離関数の別の見方
つまり、
を、
である。
すなわち、
3次元回転の誤差の定量化
さて、ここまでは2次元平面上での回転についての議論だった。
次に、3次元空間
そして、その定量化は、
定義
まず、
ただし、
次に、
が の距離であることの証明
興味があるのは、この定義で得られた
局所的には距離関数となっているのは直観的だが、大域的にもそうかどうかは、自明ではないので、証明を与えよう。
証明
- 正定値性
は定義より明らかである(値域が正になるように定義した)。 - 非退化性
も明らかである(回転角0ということは、軸が何であれ、無回転を表す)。 - 対称性
は次のように示す。
より、
したがって、
そこで、
よって示された。
- 三角不等式
を示す。
を示せばよいが、
となる。これを示す。
axis-angle representationとversor representationの間には、
なる関係があることが知られている。
これらの関係を用いると、
なる等式を得る。
そこで、軸
を得る。
ここまで、axis-angle representationのパラメータのとり方に制限を与えていなかったが、
つまり、
このとり方をしたとき、定義より
である。
この仮定のもとで、
したがって、
となる。
すなわち、
よって示された。Q.E.D.
の計算方法
以上で、
これで計算される距離は「角度」なので、幾何にそれほど明るくないエンジニアやテスターにも直観的なメトリクスである。
versor representation
単位クォータニオンを用いた表現の場合、
と計算できる。
最適化問題などでは、
matrix representation
行列を用いた表現の場合、
と計算できる。
axis-angle representation
軸と回転角を用いた表現の場合、既に、証明中でもみたが、
により計算できる。
3次元回転の特定の軸に沿った最良近似
上のversor representationによる距離の計算は簡単で扱いやすいので、応用例を一つ挙げる。
ある3次元回転と単位ベクトルが与えられたときに、与えられた単位ベクトルを軸とする3次元回転で、 与えられた3次元回転を最もよく近似するものを求める。
与えられた3次元回転を、単位クォータニオン
求める回転角
ただし、
を充たす角である。
C言語的に書けば、
theta = 2 * atan2(ex * b + ey * c + ez * d, a);
となる。