Implement Euler angle representation of sixdegreesoffreedom equations of motion
expand all in page
Libraries:
Aerospace Blockset / Equations of Motion / 6DOF
Description
The 6DOF (Euler Angles) block implements the Euler angle representation of sixdegreesoffreedom equations of motion, taking into consideration the rotation of a bodyfixed coordinate frame (X_{b}, Y_{b}, Z_{b}) about a flat Earth reference frame (X_{e}, Y_{e}, Z_{e}). For more information about these reference points, 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
Euler Angles
(default)  Quaternion
Equations of motion representation, specified according to the following table.
Representation  Description 

 Use Euler angles within equations of motion. 
 Use quaternions within equations of motion. 
The Quaternion
selection conforms the equations of motion in Algorithms.
Programmatic Use
Block Parameter: rep 
Type: character vector 
Values: Euler Angles  Quaternion 
Default: 'Euler Angles' 
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) 
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 unique name to each state. You can use state names instead of block paths during linearization.
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 commadelimited list surrounded by braces, for example,
{'a', 'b', 'c'}
. Each name must be unique.If a parameter is empty (
' '
), no name assignment occurs.The state names apply only to the selected block with the name parameter.
The number of states must divide evenly among the number of state names.
You can specify fewer names than states, but you cannot specify more names than states.
For example, you can specify two names in a system with four states. The first name applies to the first two states and the second name to the last two states.
To assign state names with a variable in the MATLAB^{®} workspace, enter the variable without quotes. A variable can be 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: '' 
Euler rotation angles: e.g., {'phi', 'theta', 'psi'} — Euler rotation state name
''
(default)  commaseparated list surrounded by braces
Euler rotation angle state names, specified as a commaseparated list surrounded by braces.
Programmatic Use
Block Parameter: eul_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 6DOF (Euler Angles) block uses these reference frame concepts.
The origin of the bodyfixed coordinate frame is the center of gravity of the body, and the body is assumed to be rigid, an assumption that eliminates the need to consider the forces acting between individual elements of mass.
The flat Earth reference frame is considered inertial, an excellent approximation that allows the forces due to the Earth motion relative to the "fixed stars" to be neglected.
Translational motion of the bodyfixed coordinate frame, where the applied forces [F_{x} F_{y} F_{z}]^{T} are in the bodyfixed frame, and the mass of the body m is assumed constant.
$$\begin{array}{l}{\overline{F}}_{b}=\left[\begin{array}{c}{F}_{x}\\ {F}_{y}\\ {F}_{z}\end{array}\right]=m\left({\dot{\overline{V}}}_{b}+\overline{\omega}\times {\overline{V}}_{b}\right)\\ {A}_{bb}=\left[\begin{array}{c}{\dot{u}}_{b}\\ {\dot{v}}_{b}\\ {\dot{w}}_{b}\end{array}\right]=\frac{1}{m}{\overline{F}}_{b}\overline{\omega}\times {\overline{V}}_{b}\\ {A}_{be}=\frac{1}{m}{F}_{b}\\ {\overline{V}}_{b}=\left[\begin{array}{c}{u}_{b}\\ {v}_{b}\\ {w}_{b}\end{array}\right],\overline{\omega}=\left[\begin{array}{c}p\\ q\\ r\end{array}\right]\end{array}$$
The rotational dynamics of the bodyfixed frame, where the applied moments are [L M N]^{T}, and the inertia tensor I is with respect to the origin O.
$$\begin{array}{l}{\overline{M}}_{B}=\left[\begin{array}{c}L\\ M\\ N\end{array}\right]=I\dot{\overline{\omega}}+\overline{\omega}\times (I\overline{\omega})\\ I=\left[\begin{array}{ccc}{I}_{xx}& {I}_{xy}& {I}_{xz}\\ {I}_{yx}& {I}_{yy}& {I}_{yz}\\ {I}_{zx}& {I}_{zy}& {I}_{zz}\end{array}\right]\end{array}$$
The relationship between the bodyfixed angular velocity vector, [p q r]^{T}, and the rate of change of the Euler angles, $$[\begin{array}{ccc}\dot{\varphi}\text{\hspace{0.05em}}\text{\hspace{0.17em}}& \dot{\theta}\text{\hspace{0.17em}}\text{\hspace{0.05em}}\text{\hspace{0.05em}}& \dot{\psi}\end{array}{]}^{T}$$, are determined by resolving the Euler rates into the bodyfixed coordinate frame.
$$\left[\begin{array}{c}p\\ q\\ r\end{array}\right]=\left[\begin{array}{c}\dot{\varphi}\\ 0\\ 0\end{array}\right]+\left[\begin{array}{ccc}1& 0& 0\\ 0& \mathrm{cos}\varphi & \mathrm{sin}\varphi \\ 0& \mathrm{sin}\varphi & \mathrm{cos}\varphi \end{array}\right]\left[\begin{array}{c}0\\ \dot{\theta}\\ 0\end{array}\right]+\left[\begin{array}{ccc}1& 0& 0\\ 0& \mathrm{cos}\varphi & \mathrm{sin}\varphi \\ 0& \mathrm{sin}\varphi & \mathrm{cos}\varphi \end{array}\right]\left[\begin{array}{ccc}\mathrm{cos}\theta & 0& \mathrm{sin}\theta \\ 0& 1& 0\\ \mathrm{sin}\theta & 0& \mathrm{cos}\theta \end{array}\right]\left[\begin{array}{c}0\\ 0\\ \dot{\psi}\end{array}\right]\equiv {J}^{1}\left[\begin{array}{c}\dot{\varphi}\\ \dot{\theta}\\ \dot{\psi}\end{array}\right]$$
Inverting J then gives the required relationship to determine the Euler rate vector.
$$\left[\begin{array}{c}\dot{\varphi}\\ \dot{\theta}\\ \dot{\psi}\end{array}\right]=J\left[\begin{array}{c}p\\ q\\ r\end{array}\right]\text{\hspace{0.17em}}=\left[\begin{array}{ccc}1& (\mathrm{sin}\varphi \mathrm{tan}\theta )& (\mathrm{cos}\varphi \mathrm{tan}\theta )\\ 0& \mathrm{cos}\varphi & \mathrm{sin}\varphi \\ 0& \frac{\mathrm{sin}\varphi}{\mathrm{cos}\theta}& \frac{\mathrm{cos}\varphi}{\mathrm{cos}\theta}\end{array}\right]\left[\begin{array}{c}p\\ q\\ r\end{array}\right]$$
References
[1] Stevens, Brian, and Frank Lewis, Aircraft Control and Simulation. Hoboken, NJ: Second Edition, John Wiley & Sons, 2003.
[2] Zipfel, Peter H., Modeling and Simulation of Aerospace Vehicle Dynamics. Reston, Va: Second Edition, AIAA Education Series, 2007.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Version History
Introduced in R2006a
See Also
6DOF (Quaternion)  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 (Wind Angles)  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 (Wind Angles)
Topics
 About Aerospace Coordinate Systems
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