Implement quaternion representation of sixdegreesoffreedom equations of motion with respect to body axes
expand all in page
Libraries:
Aerospace Blockset / Equations of Motion / 6DOF
Description
The 6DOF (Quaternion) block implements quaternion representation ofsixdegreesoffreedom equations of motion with respect to body axes. For a descriptionof the coordinate system and the translational dynamics, see the block description forthe 6DOF (Euler Angles) block.
For more information on the integration of the rate of change of the quaternionvector, see Algorithms.
Limitations
The block assumes that the applied forces act at the center of gravity of the body, and that the mass and inertia are constant.
Ports
Input
expand all
F_{xyz}(N) — Applied forces
threeelement vector
Applied forces, specified as a threeelement vector in bodyfixed axes. For more information on the frame, see Body Coordinates.
Data Types: double
M_{xyz}(Nm) — Applied moments
threeelement vector
Applied moments, specified as a threeelement vector in bodyfixed axes. For more information on the frame, see Body Coordinates.
Data Types: double
Output
expand all
V_{e} — Velocity in flat Earth reference frame
threeelement vector
Velocity in the flat Earth reference frame, returned as a threeelement vector.
Data Types: double
X_{e} — Position in flat Earth reference frame
threeelement vector
Position in the flat Earth reference frame, returned as a threeelement vector.
Data Types: double
φ θ ψ (rad) — Euler rotation angles
threeelement vector
Euler rotation angles [roll, pitch, yaw] defining an intrinsic xyz rotation, as a threeelement vector, in radians. Yaw, pitch, and roll angles are applied using the zyx rotation sequence, such as angle2dcm(yaw,pitch,roll,"ZYX")
.
Data Types: double
DCM_{be} — Coordinate transformation
3by3 matrix
Coordinate transformation from flat Earth axes to bodyfixed axes, returned as a 3by3 matrix.
Data Types: double
V_{b} — Velocity in the bodyfixed frame
threeelement vector
Velocity in the bodyfixed frame, returned as a threeelement vector.
Data Types: double
ω_{b} (rad/s) — Angular rates in bodyfixed axes
threeelement vector
Angular rates in bodyfixed axes, returned as a threeelement vector, in radians per second.
Data Types: double
dω_{b}/dt — Angular accelerations
threeelement vector
Angular accelerations in bodyfixed axes, returned as a threeelement vector, in radians per second squared.
Data Types: double
A_{bb} — Accelerations in bodyfixed axes
threeelement vector
Accelerations in bodyfixed axes with respect to body frame, returned as a threeelement vector.
Data Types: double
A_{be} — Accelerations with respect to inertial frame
threeelement vector
Accelerations in bodyfixed axes with respect to inertial frame (flat Earth), returned as a threeelement vector. You typically connect this signal to the accelerometer.
Dependencies
This port appears only when the Include inertial acceleration check box is selected.
Data Types: double
Parameters
expand all
Main
Units — Input and output units
Metric (MKS)
(default)  English (Velocity in ft/s)
 English (Velocity in kts)
Input and output units, specified as Metric (MKS)
, English (Velocity in ft/s)
, or English (Velocity in kts)
.
Units  Forces  Moment  Acceleration  Velocity  Position  Mass  Inertia 

Metric (MKS)  Newton  Newtonmeter  Meters per second squared  Meters per second  Meters  Kilogram  Kilogram meter squared 
English (Velocity in ft/s)  Pound  Footpound  Feet per second squared  Feet per second  Feet  Slug  Slug foot squared 
English (Velocity in kts)  Pound  Footpound  Feet per second squared  Knots  Feet  Slug  Slug foot squared 
Programmatic Use
Block Parameter: units 
Type: character vector 
Values: Metric (MKS)  English (Velocity in ft/s)  English (Velocity in kts) 
Default: Metric (MKS) 
Mass Type — Mass type
Fixed
(default)  Simple Variable
 Custom Variable
Mass type, specified according to the following table.
Mass Type  Description  Default for 

Fixed  Mass is constant throughout the simulation. 

Simple Variable  Mass and inertia vary linearly as a function of mass rate. 

Custom Variable  Mass and inertia variations are customizable. 

The Simple Variable
selection conforms to the previously described equations of motion.
Programmatic Use
Block Parameter: mtype 
Type: character vector 
Values: Fixed  Simple Variable  Custom Variable 
Default: Simple Variable 
Representation — Equations of motion representation
Quaternion
(default)  Euler Angles
Equations of motion representation, specified according to thefollowing table.
Representation  Description 

 Use Euler angles within equations ofmotion. 
 Use quaternions within equations ofmotion. 
The Quaternion
selection conforms to the equations of motion inAlgorithms.
Programmatic Use
Block Parameter:rep 
Type: charactervector 
Values:Euler Angles Quaternion 
Default:'Quaternion' 
Initial position in inertial axes [Xe,Ye,Ze] — Position in inertial axes
[0 0 0]
(default)  threeelement vector
Initial location of the body in the flat Earth reference frame, specified as a threeelement vector.
Programmatic Use
Block Parameter: xme_0 
Type: character vector 
Values: '[0 0 0]'  threeelement vector 
Default: '[0 0 0]' 
Initial velocity in body axes [U,v,w] — Velocity in body axes
[0 0 0]
(default)  threeelement vector
Initial velocity in body axes, specified as a threeelement vector, in the bodyfixed coordinate frame.
Programmatic Use
Block Parameter: Vm_0 
Type: character vector 
Values: '[0 0 0]'  threeelement vector 
Default: '[0 0 0]' 
Initial Euler orientation [roll, pitch, yaw] — Initial Euler orientation
[0 0 0]
(default)  threeelement vector
Initial Euler orientation angles [roll, pitch, yaw], specified as a threeelement vector, in radians. Euler rotation angles are those between the body and northeastdown (NED) coordinate systems.
Programmatic Use
Block Parameter: eul_0 
Type: character vector 
Values: '[0 0 0]'  threeelement vector 
Default: '[0 0 0]' 
Initial body rotation rates [p,q,r] — Initial body rotation
[0 0 0]
(default)  threeelement vector
Initial bodyfixed angular rates with respect to the NED frame, specified as a threeelement vector, in radians per second.
Programmatic Use
Block Parameter: pm_0 
Type: character vector 
Values: '[0 0 0]'  threeelement vector 
Default: '[0 0 0]' 
Initial mass — Initial mass
1.0
(default)  scalar
Initial mass of the rigid body, specified as a double scalar.
Programmatic Use
Block Parameter: mass_0 
Type: character vector 
Values: '1.0'  double scalar 
Default: '1.0' 
Inertia — Inertia
eye(3)
(default)  scalar
Inertia of the body, specified as a double scalar.
Dependencies
To enable this parameter, set Mass type to Fixed
.
Programmatic Use
Block Parameter: inertia 
Type: character vector 
Values: eye(3)  double scalar 
Default: eye(3) 
Gain for quaternion normalization — Gain
1.0
(default)  scalar
Gain to maintain the norm of the quaternion vector equal to 1.0, specified as a double scalar.
Programmatic Use
Block Parameter: k_quat 
Type: character vector 
Values: 1.0  double scalar 
Default: 1.0 
Include inertial acceleration — Include inertial acceleration port
off
(default)  on
Select this check box to add an inertial acceleration port.
Dependencies
To enable the A_{b ff} port, select this parameter.
Programmatic Use
Block Parameter: abi_flag 
Type: character vector 
Values: 'off'  'on' 
Default: off 
State Attributes
Assign a unique name to each state. You can use state names instead of block paths duringlinearization.
To assign a name to a single state, enter a unique name between quotes,for example,
'velocity'
.To assign names to multiple states, enter a commaseparated listsurrounded by braces, for example,
{'a', 'b', 'c'}
. Eachname must be unique.If a parameter is empty (
' '
), no name isassigned.The state names apply only to the selected block with the nameparameter.
The number of states must divide evenly among the number of statenames.
You can specify fewer names than states, but you cannot specify more namesthan states.
For example, you can specify two names in a system with four states. Thefirst name applies to the first two states and the second name to the lasttwo states.
To assign state names with a variable in the MATLAB^{®} workspace, enter the variable without quotes. A variable canbe a character vector, cell array, or structure.
Position: e.g., {'Xe', 'Ye', 'Ze'} — Position state name
''
(default)  commaseparated list surrounded by braces
Position state names, specified as a commaseparated list surrounded by braces.
Programmatic Use
Block Parameter: xme_statename 
Type: character vector 
Values: ''  commaseparated list surrounded by braces 
Default: '' 
Velocity: e.g., {'U', 'v', 'w'} — Velocity state name
''
(default)  commaseparated list surrounded by braces
Velocity state names, specified as commaseparated list surrounded by braces.
Programmatic Use
Block Parameter: Vm_statename 
Type: character vector 
Values: ''  commaseparated list surrounded by braces 
Default: '' 
Quaternion vector: e.g., {'qr', 'qi', 'qj', 'qk'} — Quaternion vector state name
''
(default)  commaseparated list surrounded by braces
Quaternion vector state names, specified as a commaseparated list surrounded by braces.
Programmatic Use
Block Parameter: quat_statename 
Type: character vector 
Values: ''  commaseparated list surrounded by braces 
Default: '' 
Body rotation rates: e.g., {'p', 'q', 'r'} — Body rotation state names
''
(default)  commaseparated list surrounded by braces
Body rotation rate state names, specified commaseparated list surrounded by braces.
Programmatic Use
Block Parameter: pm_statename 
Type: character vector 
Values: ''  commaseparated list surrounded by braces 
Default: '' 
Algorithms
The integration of the rate of change of the quaternion vector is given below. Thegain K drives the norm of the quaternion state vector to 1.0 should $$\epsilon $$become nonzero. You must choose the value of this gain with care,because a large value improves the decay rate of the error in the norm, but also slowsthe simulation because fast dynamics are introduced. An error in the magnitude in oneelement of the quaternion vector is spread equally among all the elements, potentiallyincreasing the error in the state vector.
$$\begin{array}{l}\left[\begin{array}{c}{\dot{q}}_{0}\\ {\dot{q}}_{1}\\ {\dot{q}}_{2}\\ {\dot{q}}_{3}\end{array}\right]=\raisebox{1ex}{$1$}\!\left/ \!\raisebox{1ex}{$2$}\right.\left[\begin{array}{cccc}0& p& q& r\\ p& 0& r& q\\ q& r& 0& p\\ r& q& p& 0\end{array}\right]\left[\begin{array}{c}{q}_{0}\\ {q}_{1}\\ {q}_{2}\\ {q}_{3}\end{array}\right]+K\epsilon \left[\begin{array}{c}{q}_{0}\\ {q}_{1}\\ {q}_{2}\\ {q}_{3}\end{array}\right]\\ \epsilon =1\left({q}_{0}^{2}+{q}_{1}^{2}+{q}_{2}^{2}+{q}_{3}^{2}\right)\end{array}$$
Aerospace Blockset™ uses quaternions that are defined using the scalarfirstconvention.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Version History
Introduced in R2006a
See Also
6DOF (Euler Angles)  6DOF ECEF (Quaternion)  6DOF Wind (Quaternion)  6DOF Wind (Wind Angles)  Custom Variable Mass 6DOF (Euler Angles)  Custom Variable Mass 6DOF (Quaternion)  Custom Variable Mass 6DOF ECEF(Quaternion)  Custom Variable Mass 6DOF Wind(Quaternion)  Custom Variable Mass 6DOF Wind (WindAngles)  Simple Variable Mass 6DOF (Euler Angles)  Simple Variable Mass 6DOF (Quaternion)  Simple Variable Mass 6DOF ECEF(Quaternion)  Simple Variable Mass 6DOF Wind(Quaternion)  Simple Variable Mass 6DOF Wind (WindAngles)
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
 América Latina (Español)
 Canada (English)
 United States (English)
Europe
 Belgium (English)
 Denmark (English)
 Deutschland (Deutsch)
 España (Español)
 Finland (English)
 France (Français)
 Ireland (English)
 Italia (Italiano)
 Luxembourg (English)
 Netherlands (English)
 Norway (English)
 Österreich (Deutsch)
 Portugal (English)
 Sweden (English)
 Switzerland
 Deutsch
 English
 Français
 United Kingdom (English)
Contact your local office