Package Frames.Quaternions contains type definitions and functions to transform rotational frame quantities with quaternions. Functions of this package are currently only utilized in MultiBody.Parts.Body components, when quaternions shall be used as parts of the body states. Some functions are also used in a new Modelica package for B-Spline interpolation that is able to interpolate paths consisting of position vectors and orientation objects.
In the table below an example is given for every function definition. The used variables have the following declaration:
Quaternions.Orientation Q, Q1, Q2, Q_rel, Q_inv; Real[3,3] T, T_inv; Real[3] v1, v2, w1, w2, n_x, n_y, n_z, res_ori, phi; Real[6] res_equal; Real L, angle;
Function/type | Description |
---|---|
Orientation Q; | New type defining a quaternion object that describes the rotation of frame 1 into frame 2. |
der_Orientation der_Q; | New type defining the first time derivative of Frames.Quaternions.Orientation. |
res_ori = orientationConstraint(Q); | Return the constraints between the variables of a quaternion object (shall be zero). |
w1 = angularVelocity1(Q, der_Q); | Return angular velocity resolved in frame 1 from
quaternion object Q and its derivative der_Q. |
w2 = angularVelocity2(Q, der_Q); | Return angular velocity resolved in frame 2 from
quaternion object Q and its derivative der_Q. |
v1 = resolve1(Q,v2); | Transform vector v2 from frame 2 to frame 1. |
v2 = resolve2(Q,v1); | Transform vector v1 from frame 1 to frame 2. |
[v1,w1] = multipleResolve1(Q, [v2,w2]); | Transform several vectors from frame 2 to frame 1. |
[v2,w2] = multipleResolve2(Q, [v1,w1]); | Transform several vectors from frame 1 to frame 2. |
Q = nullRotation() | Return quaternion object R that does not rotate a frame. |
Q_inv = inverseRotation(Q); | Return inverse quaternion object. |
Q_rel = relativeRotation(Q1,Q2); | Return relative quaternion object from two absolute quaternion objects. |
Q2 = absoluteRotation(Q1,Q_rel); | Return absolute quaternion object from another
absolute and a relative quaternion object. |
Q = planarRotation(e, angle); | Return quaternion object of a planar rotation. |
phi = smallRotation(Q); | Return rotation angles phi valid for a small rotation. |
Q = from_T(T); | Return quaternion object Q from transformation matrix T. |
Q = from_T_inv(T_inv); | Return quaternion object Q from inverse transformation matrix T_inv. |
T = to_T(Q); | Return transformation matrix T from quaternion object Q. |
T_inv = to_T_inv(Q); | Return inverse transformation matrix T_inv from quaternion object Q. |
Extends from Modelica.Icons.FunctionsPackage
(Icon for packages containing functions).
Name | Description |
---|---|
absoluteRotation | Return absolute quaternions orientation object from another absolute and a relative quaternions orientation object |
angularVelocity1 | Compute angular velocity resolved in frame 1 from quaternions orientation object and its derivative |
angularVelocity2 | Compute angular velocity resolved in frame 2 from quaternions orientation object and its derivative |
der_Orientation[4] | First time derivative of Quaternions.Orientation |
from_T | Return quaternion orientation object Q from transformation matrix T |
from_T_inv | Return quaternion orientation object Q from inverse transformation matrix T_inv |
inverseRotation | Return inverse quaternions orientation object |
multipleResolve1 | Transform several vectors from frame 2 to frame 1 |
multipleResolve2 | Transform several vectors from frame 1 to frame 2 |
nullRotation | Return quaternion orientation object that does not rotate a frame |
Orientation | Orientation type defining rotation from a frame 1 into a frame 2 with quaternions {p1,p2,p3,p0} |
orientationConstraint | Return residues of orientation constraints (shall be zero) |
planarRotation | Return quaternion orientation object of a planar rotation |
relativeRotation | Return relative quaternions orientation object |
resolve1 | Transform vector from frame 2 to frame 1 |
resolve2 | Transform vector from frame 1 to frame 2 |
smallRotation | Return rotation angles valid for a small rotation |
to_T | Return transformation matrix T from quaternion orientation object Q |
to_T_inv | Return inverse transformation matrix T_inv from quaternion orientation object Q |
This type describes the rotation to rotate a frame 1 into a frame 2 using quaternions (also called Euler parameters) according to the following definition:
Quaternions.Orientation Q; Real n[3]; Real phi(unit="rad"); Q = [ n*sin(phi/2) cos(phi/2) ]
where "n" is the axis of rotation to rotate frame 1 into frame 2 and "phi" is the rotation angle for this rotation. Vector "n" is either resolved in frame 1 or in frame 2 (the result is the same since the coordinates of "n" with respect to frame 1 are identical to its coordinates with respect to frame 2).
The term "quaternions" is preferred over the historically more reasonable "Euler parameters" in order to not get confused with Modelica "parameters".
Extends from Modelica.Mechanics.MultiBody.Frames.Internal.QuaternionBase
.
Name | Value |
---|---|
min | -Modelica.Constants.inf |
max | Modelica.Constants.inf |
start | 0. |
Extends from Real
.
Name | Value |
---|---|
unit | "1/s" |
min | -Modelica.Constants.inf |
max | Modelica.Constants.inf |
start | 0. |
residue = Quaternions.orientationConstraint(Q);
This function returns the Real residue vector with 1 element only that describes the constraints between the 4 elements of the quaternions orientation Q.
Frames.orientationConstraint, TransformationMatrices.orientationConstraint.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Type | Name | Description |
---|---|---|
Real | residue[1] | Residue constraint (shall be zero) |
w = Quaternions.angularVelocity1(Q, der_Q);
This function returns the angular velocity w of frame 2 with respect to frame 1, resolved in frame 1, from the quaternions orientation Q that describes the orientation to rotate frame 1 into frame 2 and from its first time derivative der_Q.
Frames.angularVelocity1, TransformationMatrices.angularVelocity1.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
der_Orientation | der_Q[4] | Derivative of Q |
Type | Name | Description |
---|---|---|
AngularVelocity | w[3] | Angular velocity of frame 2 with respect to frame 1 resolved in frame 1 |
w = Quaternions.angularVelocity2(Q, der_Q);
This function returns the angular velocity w of frame 2 with respect to frame 1, resolved in frame 2, from the quaternions orientation Q that describes the orientation to rotate frame 1 into frame 2 and from its first time derivative der_Q.
Frames.angularVelocity2, TransformationMatrices.angularVelocity2.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
der_Orientation | der_Q[4] | Derivative of Q |
Type | Name | Description |
---|---|---|
AngularVelocity | w[3] | Angular velocity of frame 2 with respect to frame 1 resolved in frame 2 |
v1 = Quaternions.resolve1(Q, v2);
This function returns vector v resolved in frame 1 (=v1) from vector v resolved in frame 2 (=v2) using the quaternions orientation Q that describes the orientation to rotate frame 1 into frame 2.
resolve2, Frames.resolve1, TransformationMatrices.resolve1.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Real | v2[3] | Vector in frame 2 |
Type | Name | Description |
---|---|---|
Real | v1[3] | Vector in frame 1 |
v2 = Quaternions.resolve2(Q, v1);
This function returns vector v resolved in frame 2 (=v2) from vector v resolved in frame 1 (=v1) using the quaternions orientation Q that describes the orientation to rotate frame 1 into frame 2.
resolve1, Frames.resolve2, TransformationMatrices.resolve2.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Real | v1[3] | Vector in frame 1 |
Type | Name | Description |
---|---|---|
Real | v2[3] | Vector in frame 2 |
v1 = Quaternions.multipleResolve1(Q, v2);
This function returns vectors v resolved in frame 1 (=v1) from vectors v resolved in frame 2 (=v2) using the quaternions orientation Q that describes the orientation to rotate frame 1 into frame 2.
TransformationMatrices.multipleResolve1.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Real | v2[3,:] | Vectors in frame 2 |
Type | Name | Description |
---|---|---|
Real | v1[3,size(v2, 2)] | Vectors in frame 1 |
v2 = Quaternions.multipleResolve2(Q, v1);
This function returns vectors v resolved in frame 2 (=v2) from vectors v resolved in frame 1 (=v1) using the quaternions orientation Q that describes the orientation to rotate frame 1 into frame 2.
TransformationMatrices.multipleResolve2.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Real | v1[3,:] | Vectors in frame 1 |
Type | Name | Description |
---|---|---|
Real | v2[3,size(v1, 2)] | Vectors in frame 2 |
Q = Quaternions.nullRotation();
This function returns a quaternions orientation Q describing the orientation object to rotate frame 1 into frame 2, if frame 1 and frame 2 are identical. (= transformation matrix is identity matrix and angular velocity is zero).
Frames.nullRotation, TransformationMatrices.nullRotation.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Q_inv = Quaternions.inverseRotation(Q);
This function returns quaternions orientation Q_inv that describes the orientation to rotate from frame 2 to frame 1 from the quaternions orientation Q that describes the orientation to rotate from frame 1 into frame 2.
Frames.inverseRotation, TransformationMatrices.inverseRotation.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Type | Name | Description |
---|---|---|
Orientation | Q_inv[4] | Quaternions orientation object to rotate frame 2 into frame 1 |
Q_rel = Quaternions.relativeRotation(Q1, Q2);
This function returns quaternions orientation Q_rel that describes the orientation to rotate frame 1 to frame 2 from the quaternions orientation Q1 that describes the orientation to rotate from frame 0 to frame 1 and from the quaternions orientation Q2 that describes the orientation to rotate from frame 0 to frame 2.
Frames.relativeRotation, TransformationMatrices.relativeRotation.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q1[4] | Quaternions orientation object to rotate frame 0 into frame 1 |
Orientation | Q2[4] | Quaternions orientation object to rotate frame 0 into frame 2 |
Type | Name | Description |
---|---|---|
Orientation | Q_rel[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Q2 = Quaternions.absoluteRotation(Q1, Q_rel);
This function returns quaternions orientation Q2 that describes the orientation frame 0 to frame 2 from the quaternions orientation Q1 that describes the orientation to rotate from frame 0 to frame 1 and from the relative quaternions orientation Q_rel that describes the orientation to rotate from frame 1 to frame 2.
Frames.absoluteRotation, TransformationMatrices.absoluteRotation.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q1[4] | Quaternions orientation object to rotate frame 0 into frame 1 |
Orientation | Q_rel[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Type | Name | Description |
---|---|---|
Orientation | Q2[4] | Quaternions orientation object to rotate frame 0 into frame 2 |
Q = Quaternions.planarRotation(e, angle);
This function returns quaternions orientation Q that describes the orientation to rotate in the plane along unit axis e from frame 1 into frame 2 with angle angle. Note, "e" must be a unit vector. However, this is not checked in this function and the function will return a wrong result, if length(e) is not one.
Frames.planarRotation, TransformationMatrices.planarRotation.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Real | e[3] | Normalized axis of rotation (must have length=1) |
Angle | angle | Rotation angle to rotate frame 1 into frame 2 along axis e |
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 along axis e |
phi = Quaternions.smallRotation(Q);
This function returns rotation angles valid for a small rotation of x-y-z sequence (i.e. {1,2,3}).
Frames.smallRotation, TransformationMatrices.smallRotation.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Type | Name | Description |
---|---|---|
Angle | phi[3] | The rotation angles around x-, y-, and z-axis of frame 1 to rotate frame 1 into frame 2 for a small relative rotation |
Q = Quaternions.from_T(T, Q_guess);
This function returns a quaternions orientation Q. computed from a transformation matrix T and depending on the initial guess Q_guess. Generally, the transformation matrix T can be gained using a function from the TransformationMatrices package.
to_T. from_T_inv, Frames.from_T, TransformationMatrices.from_T.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Real | T[3,3] | Transformation matrix to transform vector from frame 1 to frame 2 (v2=T*v1) |
Orientation | Q_guess[4] | Guess value for Q (there are 2 solutions; the one close to Q_guess is used |
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 (Q and -Q have same transformation matrix) |
Q = Quaternions.from_T_inv(T_inv, Q_guess);
This function returns a quaternions orientation Q. computed from an inverse transformation matrix T_inv and depending on the initial guess Q_guess. Generally, the transformation matrix T_inv can be gained using a function from the TransformationMatrices package, e.g. using T_inv = inverseRotation(T).
from_T, Frames.from_T_inv, TransformationMatrices.from_T_inv.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Real | T_inv[3,3] | Inverse transformation matrix to transform vector from frame 2 to frame 1 (v1=T_inv*v2) |
Orientation | Q_guess[4] | Guess value for output Q (there are 2 solutions; the one closer to Q_guess is used |
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 (Q and -Q have same transformation matrix) |
T = Quaternions.to_T(Q);
This function returns a real matrix T computed from a quaternions orientation Q. The matrix T is considered to be an object transformation matrix.
from_T, to_T_inv, Frames.to_T, TransformationMatrices.to_T.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Type | Name | Description |
---|---|---|
Real | T[3,3] | Transformation matrix to transform vector from frame 1 to frame 2 (v2=T*v1) |
T_inv = Quaternions.to_T_inv(Q);
This function returns a real matrix T_inv computed from a quaternions orientation Q. The matrix T is considered to be an inverse transformation matrix.
to_T, from_T_inv, Frames.to_T_inv, TransformationMatrices.to_T_inv.
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
Orientation | Q[4] | Quaternions orientation object to rotate frame 1 into frame 2 |
Type | Name | Description |
---|---|---|
Real | T_inv[3,3] | Transformation matrix to transform vector from frame 2 to frame 1 (v1=T*v2) |
Generated 2018-12-12 12:12:44 EST by MapleSim.