ロドリゲスをオイラーアングルに変換し、その逆も行う 質問する

ロドリゲスをオイラーアングルに変換し、その逆も行う 質問する

私はsolvePnPを使用していて、変換ベクトルを取得しています。ここで、いくつかのオイラー角をsolvePnPの結果と比較する必要があります。そして、オイラー角を「rodrigues」に変換する必要があります。

solvePnP からの変換ベクトルはオイラー角と等しいですか。変換行列だけがロドリゲス角と関係があるのでしょうか。それとも、3 つのオイラー角とはまったく異なる特別なロドリゲス角があるのでしょうか。両者の間の数学はどのようになっているのでしょうか。見つけられなかった OpenCV 関数があるのでしょうか。

ベストアンサー1

まず忘れてください翻訳ベクトルは、回転: 平行移動は物体を移動させ、回転は物体の向きを変えます。

ロドリゲスパラメータは、軸角度回転これらは4つの数字で構成されており[theta, x, y, z]、単位ベクトルで記述された軸を中心に角度「theta」回転する必要があることを意味しますv=[x, y, z]cv::ロドリゲス関数リファレンスによると、OpenCV は、3 つの要素を持つベクトルとしてロドリゲス表記の「コンパクトな」表現を使用しているようですrod2=[a, b, c]

  • 回転する角度thetaは入力ベクトルのモジュールですtheta = sqrt(a^2 + b^2 + c^2)
  • 回転軸vは正規化された入力ベクトルです。v = rod2/theta = [a/theta, b/theta, c/theta]

それで、solvePnPのロドリゲスベクトルは、オイラー角X、Y、Z 軸の組み合わせを中心とした 3 つの連続した回転を表す表記法です。

両方の回転を比較するにはどうすればよいでしょうか。これは良い質問です。オイラー表現とロドリゲス表現の両方に特異点やその他の問題があります。たとえば、2 つのオイラー ターン、または 2 つのロドリゲス パラメーターを比較すると、まったく異なって見えるかもしれませんが、実際にはほぼ同じ回転を表しています。両方の回転が同じ (または近似) かどうかを確認する必要があるだけの場合は、次のアプローチに従うことができます。

  1. 両方の回転を行列表記に変換します(四元数も有効です)
  2. 1つの回転を他の回転から「減算」する、つまり1つの回転を他の回転の逆回転と連結する
    • 回転行列を使用して、一方を他方の転置(逆回転)で乗算します。ヌル回転は単位行列です。
    • 四元数を使用して、一方を他方の複素共役で乗算します (最後の 3 つの要素を否定します)。
  3. 結果がヌル回転に近いかどうかを確認します。
    • ヌル回転行列は恒等行列です。
    • ヌル四元数は最初の要素に1または-1を持つ。

おすすめ記事