4 DoF Model¶
The four degrees-of-freedom (4 DoF) parafoil model includes two body-frame velocities \(u,w\), forward and downward, and two inertial-frame euler angles \(\phi,\psi\), roll and yaw. This model is described in detail in Section 5.1.3 in Yakimenko 2015 and originally appeared in Jann 2001.
Aerodynamic forces are simplified to affine lift and drag equations dependent only on the symmetric actuator deflection of the parafoil. The rotational dynamics are vastly simplified, modeling the roll rate as a 1st-order lag with the asymmetric actuator deflection as its input. The yaw rate can then be determined from the roll angle.
The 4 DoF dynamics are then described by:
or written more compactly:
The aerodynamic forces can be described by:
and the angle-of-attack \(\alpha\) is defined as
Here \(C_{\mathrm{L}0}\), \(C_{\mathrm{L}\delta_s}\), \(C_{\mathrm{D}0}\), and \(C_{\mathrm{D}\delta_s}\) refer to the aerodynamic coefficients, \(\delta_{\mathrm{s}}\) is the symmetric actuator deflection, \(\rho\) is the atmospheric density, \(V_\mathrm{a}\) the relative motion through the air, and \(S_{\mathrm{ref}}\) the reference wing area. The 1st-order lag is parameterized by the gain \(K_\phi\) and time parameter \(T_\phi\), while \(\delta_{\mathrm{a}}\) represents the asymmetric deflection.
Notes¶
Fidelity¶
While this formulation disregards some of the effects contained in higher dimensional models, this allows for a significant reduction in model complexity.
Additional States¶
In addition to the 4 degrees-of-freedom of the model itself, the implemented model tracks the inertial (north-east-down) position \(p_x,p_y,p_z\). This both eases model evaluation and plotting for simulations, and eases the inclusion of GPS data. We have also included the lateral velocity \(v\) and pitch angle \(\theta\) which were both assumed \(\approx 0\). This allows for easier integration with generic parafoil sensors / messages which do not make any assumptions on \(v, \theta\) and allow us to add noise to these states to simulate model inaccuracies.
Example Configuration¶
# type describes what type of model we want to use / should be loaded
type: "parafoil_4dof_discrete"
# Q (process noise covariance matrix)
Q:
value:
[
[0.01, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0.01, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0.01, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0.0001, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0.0001, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0.0001, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0.1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0.1, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0.1],
]
is_diag: false
model_params:
# world params
rho: 1.000
# physical params
m: 122.0
S: 23.36
# aero params
C_L0: 0.502
C_Ldelta_s: 0.892
C_D0: 0.173
C_Ddelta_s: 1.086
# modeling params
T_phi: 0.994
K_phi: 0.504
# actuator params
deflection_symmetric_max: 0.5
deflectino_asymmetric_max: 2.0