A nonlinear six degree of freedom dynamics model, particularly for aircraft
Author: Andrew Ning
The dynamics implementation is quite standard and could be used for any rigid body moving through 3D space, although our usage (and conventions) are for aircraft. The main limitation of the current model is that it is based on Euler angles, rather than quaternions, but that again is because of our applications. All forces/moments and th 6B15 e atmosphere model are abstract types to allow for user-defined models. The default implementations of these abstract types include:
- aerodynamics: a standard aircraft stability/control-derivative based model (the drag model is more detailed, but that generally has a negligible impact on the dynamics).
- propulsion: an electric motor/propeller/battery model using a first-order motor model and nondimensional propeller thrust and torque curves.
- gravity: center of mass and center of gravity are coincident (constant gravitational field across the body).
- atmosphere: constant properties throughout trajectory.
The package also holds a rigid-body kinematic tree (ReferenceFrame, add_frame!, rotor_frames, propagate_kinematics!, frame_motion) shared by the FLOW Lab aerodynamic solvers (LiftingLines.jl, VortexLattice.jl, FLOWPanel.jl), so bodies from different solvers move together in one simulation. A body type joins the tree by extending SixDOF.move and, if it spins in place, SixDOF.spin; see the Reference frames page of the documentation.
pkg> add SixDOFpkg> test SixDOFUsers should read the Guide section of the documentation. Developers may be interested in the Theory section of the documentation.