Rotation Angles to Quaternions

Calculate quaternion from rotation angles

• Library:
• Aerospace Blockset / Utilities / Axes Transformations

Description

The Rotation Angles to Quaternions block converts the rotation described by the three rotation angles (R1, R2, R3) into the four-element quaternion vector (q0, q1, q2, q3), where quaternion is defined using the scalar-first convention. Aerospace Blockset™ uses quaternions that are defined using the scalar-first convention. For more information on quaternions, see Algorithms.

Limitations

• The limitations for the ZYX, ZXY, YXZ, YZX, XYZ, and XZY implementations generate an R2 angle that is between ±90 degrees, and R1 and R3 angles that are between ±180 degrees.

• The limitations for the ZYZ, ZXZ, YXY, YZY, XYX, and XZX implementations generate an R2 angle that is between 0 and 180 degrees, and R1 and R3 angles that are between ±180 degrees.

Ports

Input

expand all

Rotation angles, specified as a 3-by-1 vector, in radians.

Data Types: double

Output

expand all

Quaternion, specified as a 4-by-1 vector.

Data Types: double

Parameters

expand all

Specifies the output rotation order for three wind rotation angles.

Programmatic Use

 Block Parameter: rotationOrder Type: character vector Values: 'ZYX' | 'ZYZ' |'ZXY' | 'ZXZ' | 'YXZ' | 'YXY' | 'YZX' | 'YZY' | 'XYZ' | 'XYX' | 'XZY' | 'XZX' Default: 'ZYX'

Algorithms

A quaternion vector represents a rotation about a unit vector $\left({\mu }_{x},{\mu }_{y},{\mu }_{z}\right)$ through the angle θ. A unit quaternion itself has unit magnitude, and can be written in the following vector format:

$q=\left[\begin{array}{l}{q}_{0}\\ {q}_{1}\\ {q}_{2}\\ {q}_{3}\end{array}\right]=\left[\begin{array}{c}\mathrm{cos}\left(\theta /2\right)\\ \mathrm{sin}\left(\theta /2\right){\mu }_{x}\\ \mathrm{sin}\left(\theta /2\right){\mu }_{y}\\ \mathrm{sin}\left(\theta /2\right){\mu }_{z}\end{array}\right]$

An alternative representation of a quaternion is as a complex number,

$q={q}_{0}+i{q}_{1}+j{q}_{2}+k{q}_{3}$

where, for the purposes of multiplication:

$\begin{array}{l}{i}^{2}={j}^{2}={k}^{2}=-1\\ ij=-ji=k\\ jk=-kj=i\\ ki=-ik=j\end{array}$

The benefit of representing the quaternion in this way is the ease with which the quaternion product can represent the resulting transformation after two or more rotations.

Extended Capabilities

C/C++ Code GenerationGenerate C and C++ code using Simulink® Coder™.

Introduced in R2007b

평가판 신청