メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

Quaternions to Rotation Angles

四元数から回転ベクトルを決定する

  • Quaternions to Rotation Angles block

ライブラリ:
Aerospace Blockset / Utilities / Axes Transformations

説明

Quaternions to Rotation Angles ブロックは、4 要素の四元数ベクトル (q0q1q2q3) を、3 つの回転角度 (R1、R2、R3) によって記述される回転に変換します。このブロックは、回転角度の関数として方向余弦行列(DCM) の要素を計算することで変換を生成します。DCM の要素は、単位四元数ベクトルの関数です。Aerospace Blockset™ は、スカラー優先規則を使用して定義された四元数を使用します。このブロックはすべての四元数入力を正規化します。結果の回転角度は、フレーム A からフレーム B への一連の右手固有のパッシブ回転を表します。四元数は、フレーム A からフレーム B への右手パッシブ変換を表します。方向余弦行列の詳細については、アルゴリズム を参照してください。

制限

  • ZYXZXYYXZYZXXYZ、および XZY 回転の場合、ブロックは ±pi/2 ラジアン間にある R2 角度と、±pi ラジアン間にある R1 角度と R3 角度を生成します。

  • 「ZYZ」、「ZXZ」、「YXY」、「YZY」、「XYX」、および「XZX」回転の場合、ブロックは 0 から pi ラジアンまでの範囲の R2 角度と、±pi ラジアンまでの範囲の R1 角度と R3 角度を生成します。しかし、後者の場合、R2 が 0 のとき、R3 は 0 ラジアンに設定されます。

端子

入力

すべて展開する

四元数。4 行 1 列のベクトルとして指定されます。

データ型: double

Output

すべて展開する

回転角度。ラジアン単位の 3 行 1 列のベクトルが返されます。

データ型: double

パラメーター

すべて展開する

3 つの回転角度の回転順序を出力します。

プログラムでの使用

ブロック パラメーター: rotationOrder
: 文字ベクトル
: ZYX | ZYZ |ZXY | ZXZ | YXZ | YXY | YZX | YZY | XYZ | XYX | XZY | XZX
既定の設定: 'ZYX'

アルゴリズム

DCM の要素は単位四元数ベクトルの関数です。たとえば、回転順序が z-y-x の場合、DCM は次のように定義されます。

DCM=[cosθcosψcosθsinψsinθ(sinϕsinθcosψcosϕsinψ)(sinϕsinθsinψ+cosϕcosψ)sinϕcosθ(cosϕsinθcosψ+sinϕsinψ)(cosϕsinθsinψsinϕcosψ)cosϕcosθ]

単位四元数ベクトルによって定義される DCM は次のとおりです。

DCM=[(q02+q12q22q32)2(q1q2+q0q3)2(q1q3q0q2)2(q1q2q0q3)(q02q12+q22q32)2(q2q3+q0q1)2(q1q3+q0q2)2(q2q3q0q1)(q02q12q22+q32)]

上記の式から、DCM 要素と ZYX 回転順序の個々の回転角度の間に次の関係を導き出すことができます。

ϕ=atan(DCM(2,3),DCM(3,3))=atan(2(q2q3+q0q1),(q02q12q22+q32))θ=asin(DCM(1,3))=asin(2(q1q3q0q2))ψ=atan(DCM(1,2),DCM(1,1))=atan(2(q1q2+q0q3),(q02+q12q22q32))

ここで、ΨはR1、ΘはR2、ΦはR3です。

拡張機能

すべて展開する

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2007b で導入